Ben*_*man 7 activerecord ruby-on-rails
您知道一些bug跟踪器(和其他软件)如何允许您添加自定义字段?
通常,这是通过如下所示的数据结构完成的:
Items
----------
ID | NAME | ITEM_TYPE_ID
FieldDefinitions
---------------------------------------
ID | ITEM_TYPE_ID | FIELD_NAME | FIELD_TYPE
FieldValues
---------------------------------------
ID | FIELD_ID | ITEM_ID | VALUE
Run Code Online (Sandbox Code Playgroud)
我试图找出在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
Run Code Online (Sandbox Code Playgroud)
或者,你可以改变
cfh[fv.field_definition] = fv
Run Code Online (Sandbox Code Playgroud)
...至...
cfh[fv.field_definition.field_name] = fv.value
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3181 次 |
| 最近记录: |