如果它们是字符串,我很高兴在Rails模型上使用虚拟属性,但我还想使用其他类型的属性,比如日期或布尔值,这样我就可以使用像date_select这样的帮助器来设置虚拟属性。 / p>
这样做有什么好办法吗?
就目前而言,在虚拟属性上使用date_select助手会引发:
1 error(s) on assignment of multiparameter attributes
如果我想要一个布尔属性,我最终会使用@v_attribute = "true"
,而不是@v_attr = true
。
我找到了一个似乎有效的例子:
class MyModel
#virtual attribute
attr_accessor :v_date_field
attr_accessible :v_date_field
columns_hash["virtual_date_field"] = ActiveRecord::ConnectionAdapters::Column.new("vi_date_field", nil, "date")
end
但我真的不知道它为什么会起作用,它是否有任何副作用,而且看起来像是黑客。
答案 0 :(得分:1)
虚拟日期/时间属性问题是Rails中的已知问题:https://rails.lighthouseapp.com/projects/8994/tickets/2675-support-for-multiparameter-attribute-assignment-on-virtual-attribute-writers
看起来您的解决方案是当前修复它的最佳选择。