如何将活动记录视为真实属性等虚拟属性?

时间:2010-09-09 17:01:08

标签: ruby-on-rails ruby

如果它们是字符串,我很高兴在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

但我真的不知道它为什么会起作用,它是否有任何副作用,而且看起来像是黑客。

1 个答案:

答案 0 :(得分:1)

虚拟日期/时间属性问题是Rails中的已知问题:https://rails.lighthouseapp.com/projects/8994/tickets/2675-support-for-multiparameter-attribute-assignment-on-virtual-attribute-writers

看起来您的解决方案是当前修复它的最佳选择。