我在UrlCommand模型中有一个cgi_attributes
hstore类型列。
class UrlCommand < ActiveRecord::Base
store_accessor :cgi_attributes, :name, :range, :security, :default_value
end
但是,cgi_attributes
中的密钥应由用户动态添加。
我还希望将每个键呈现为我的表单中的输入
而不是对列进行硬编码
- [:name, :range, :security].each do | column |
= render :partial => 'attributes' , :locals => { f: f, column: column }
还需要添加那些动态生成的密钥才能更新到我的模型中。
def url_command_params
params.require(:url_command).permit(:model_name, :firmware_version, :cgi_attributes,
:cgi_name,:name, :range, :security)
end
现在,我的所有代码都基于硬代码,如何使用户可以动态添加密钥和值并存储到UrlCommand模型中?
答案 0 :(得分:0)
也许你可以为属性名称(CustomAttributes)创建一个单独的表,然后创建一个循环,用store_accessor
添加它们,如下所示:
CustomAttributes.all.each do |attribute|
store_accessor :cgi_attributes attribute.name
end
我猜你可以做类似强参数的事情。我没有试过这个我自己,因为我正在努力让hstore在我的应用程序中工作。但我将有相同的用户情况/问题来解决。所以我会测试它并在我开始工作并确认之后改变我的答案。
有点像在这个railscast中解释的: http://railscasts.com/episodes/403-dynamic-forms