【问题标题】:adding custom fields dynamically to a model将自定义字段动态添加到模型
【发布时间】:2010-04-28 04:18:54
【问题描述】:

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

class List
 has_many :records
end

class Record

end

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

例如:对于 list1,我将地址(文本)、出生日期(日期)添加为自定义字段。 然后在将记录添加到列表一时,每条记录都可以有地址和出生日期的值。

有没有提供这种功能的 ActiveRecord 插件?
或者您能否分享您对如何建模的想法?

提前致谢,
潘卡伊

【问题讨论】:

    标签: ruby-on-rails ruby activerecord


    【解决方案1】:

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

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

    【讨论】:

    • 听起来不错,但我不希望动态字段成为移动的唯一原因:|
    【解决方案2】:

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

    专业版:易于使用

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

    【讨论】:

      【解决方案3】:

      也许是这个? has_magic_columns。我自己没有测试过,但它似乎可以满足您的需求。

      【讨论】:

      • 但不适用于 Rails3。并且有一段时间没有动过代码。除了文档之外,找不到任何关于它的信息。
      猜你喜欢
      • 2010-10-16
      • 2014-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-15
      • 2012-07-29
      • 2011-02-05
      相关资源
      最近更新 更多