我有一个包含动态集和已知字段集的表单。我需要一种在数据库中存储动态字段的方法,我决定将它们存储在序列化字段中,因为我不需要搜索数据,我只需要存储并在需要时调用它。
class MyApplication < ActiveRecord::Base
has_one :applicant
belongs_to :member
serialize :additional_fields, Hash
accepts_nested_attributes_for :applicant, :additional_fields
我正在考虑让表单将字段作为additional_fields_attributes返回,并且以某种方式使模型看起来将哈希记录到additional_fields部分。我不确定是否必须使用像缺少方法这样的东西来照顾它,或者我是否应该废弃accepts_nested_attributes_for并自己处理它。
有没有人有任何想法?
谢谢!莱恩
答案 0 :(得分:1)
我刚刚测试了你的建议。
您不需要:accepts_nested_attributes_for :additional_fields
只需添加您的表单html,如:
<input name="my_application[additional_fields][first]" type="text" />
<input name="my_application[additional_fields][second]" type="text" />
它会使用密钥保存哈希:first
和second
您可以在模型中输入一系列字段,例如在用户模型中:
FIELDS= ["item1", "item2"]
在您看来:
<% User::FIELDS.each do |field|%>
<input name="my_application[additional_fields][<%= field %>]" type="text" />
<% end %>
答案 1 :(得分:1)
我最终使用了本教程http://www.kalzumeus.com/2009/11/17/practical-metaprogramming-with-ruby-storing-preferences/,该教程非常有用。
感谢您的帮助!