【发布时间】:2020-02-11 11:45:01
【问题描述】:
class Klass < ApplicationRecord
enum dimension: { length: 'length', breadth: 'breadth' }
end
我收到以下错误:-
ArgumentError: 你试图在模型上定义一个名为“name”的枚举 “Klass”,但这会生成一个类方法“length”,即 已由 ActiveRecord::Relation 定义。
我只想知道我有哪些选择可以让维度枚举与length 一起工作作为其价值之一。是否可以创建枚举而不在模型上定义length 方法?
【问题讨论】:
-
一开始为什么要这样做?如果您的模型只有两个维度顶部,为什么要添加另一层连接和复杂性?这很讨厌 EAV 反模式。
-
@max 我已经简化了我的代码并将值重命名为一些通用的值。原来的有很多值,其中一个值是长度。
-
为什么不向实际具有该属性的表添加两列,这样您就不必创建荒谬的
Thing.joins(:attributes).where(dimension: 'length', value: 15)查询?
标签: ruby-on-rails ruby activerecord enums