您知道某些错误跟踪器(和其他软件)如何允许您添加自定义字段吗?
通常,这是通过看起来像这样的数据结构完成的:
Items
----------
ID | NAME | ITEM_TYPE_ID
FieldDefinitions
---------------------------------------
ID | ITEM_TYPE_ID | FIELD_NAME | FIELD_TYPE
FieldValues
---------------------------------------
ID | FIELD_ID | ITEM_ID | VALUE
我正在尝试找出在Rails中进行此设计的最佳方法。我想允许扩展简单属性的模型很多。
当我检索
Item
时,我希望它包含为该模型定义的加法字段值的哈希。 最佳答案
就像是...?
class Item < ActiveRecord::Base
has_many :field_values
has_many :field_definitions, :through => :field_values
def custom_fields_hash
cfh = {}
self.field_values.each |fv|
cfh[fv.field_definition] = fv
end
cfh
end
end
class FieldValue < ActiveRecord::Base
belongs_to :item
belongs_to :field_definition
end
class FieldDefinition < ActiveRecord::Base
has_many :field_values
has_many :items, :through => field_values
end
或者,您可以更改
cfh[fv.field_definition] = fv
...至...
cfh[fv.field_definition.field_name] = fv.value
关于ruby-on-rails - Rails-在运行时在ActiveRecord中添加自定义字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2200565/