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

时间:2010-04-28 04:18:54

标签: ruby-on-rails ruby activerecord

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

class List
 has_many :records
end

class Record

end

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

例如:对于list1,我将地址(文本),dob(日期)添加为自定义字段。 然后在将记录添加到列表1时,每个记录都可以包含address和dob的值。

是否有任何提供此类功能的ActiveRecord插件? 或者你可以分享一下你如何对此进行建模的想法吗?

提前致谢,
的Pankaj

3 个答案:

答案 0 :(得分:2)

您应该查看无架构数据库解决方案。我认为很棒的是mongoDB

railscast解释如何将其与rails配合使用。看一看,效果很好。

答案 1 :(得分:2)

如果您的自定义字段不需要是真正的数据库列,则可以使用序列化http://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>

专业:易于使用

Con :由于自定义字段不是db列,因此无法根据数据库的值找到数据库中的记录(例如,Record.find_by_name('John Doe')不起作用)< / p>

答案 2 :(得分:1)

也许这个? has_magic_columns。我自己没有测试它,但似乎它可以做你需要的。