您知道某些错误跟踪器(和其他软件)如何允许您添加自定义字段吗?

通常,这是通过看起来像这样的数据结构完成的:

  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/

10-11 03:15