Rec*_*ode 7 activerecord ruby-on-rails
有没有人知道宝石或允许用户向模型添加字段的良好实现?
防爆.
用户希望在联系人模型中添加"内部注释"字段.在界面中,他们只需选择"新字段">"类型:文本"
谢谢
对不起,我不知道有任何插件可以做到这一点.但我有一个实施建议.
我们的想法是添加一个"DynamicField"模型,该模型与Contact模型具有has_many关系.如果在Contact模型中缺少方法,则检查是否存在动态字段以检索它(如果是这种情况).
class DynamicField < ActiveRecord::Base
belongs_to :contact
end
class Contact < ActiveRecord::Base
has_many :dynamic_fields
def method_missing(sym, *args, &block)
begin
super
rescue
field = dynamic_fields.find_by_name(sym)
end
raise ActiveRecord::NoMethodError if field.nil?
field.value
end
end
Run Code Online (Sandbox Code Playgroud)
如果要使用attribute =方法添加虚拟属性(检测是否存在"="并执行更新而不是仅获取值),则需要添加正则表达式.但你已经有了这个想法.
当该方法不存在时,我们检查动态字段是否存在具有相同名称的字段.如果没有(field.nil?),我们引发NoMethodError.否则,我们退货.
因此,您可以使用以下内容获取所有字段的列表:
Contact.find(:first).dynamic_fields
Run Code Online (Sandbox Code Playgroud)
并使用以下内容检索特定的一个:
Contact.find(:first).my_dynamic_field
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3632 次 |
| 最近记录: |