繁体   English   中英

动态将自定义字段添加到模型

[英]adding custom fields dynamically to a model

我有一个名为List的模型,该模型有很多记录:

class List
 has_many :records
end

class Record

end

记录表具有2个永久字段:名称,电子邮件。
除了这两个字段外,对于每个“列表”,一条记录可以具有“ n”个自定义字段。

例如:对于list1,我添加了address(text),dob(date)作为自定义字段。 然后,在将记录添加到列表中时,每个记录可以具有address和dob的值。

是否有提供此类功能的ActiveRecord插件?
否则,您是否可以分享有关如何建模的想法?

提前致谢,
潘卡

您应该看看无模式数据库解决方案。 我认为很棒的一个是mongoDB

有一个railscast解释了如何与rails一起使用。 看一下,效果很好。

如果您的自定义字段不需要是真实的数据库列,则可以使用serializehttp : //railsapi.com/doc/rails-v2.3.5/classes/ActiveRecord/Base.html#M000924您可以像这样使用它:

class Record < ActiveRecord::Base
  serialize :custom_fields, Hash
end

r = Record.create :custom_fields => {:name => 'John Doe', :birth_date => Date.new(1970,1,1)}

r.custom_fields[:name]
# => 'John Doe'

r.custom_fields[:birth_date]
# => #<Date: 4881175/2,0,2299161>

Pro :易于使用

缺点 :由于自定义字段不是数据库列,因此您无法基于它们的值在数据库中查找记录(例如,Record.find_by_name('John Doe')不起作用)

也许这个吗? has_magic_columns 我自己没有测试过,但看起来它可以满足您的需求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM