我正在尝试设置我自己的方法来覆盖数据库属性,以便我可以拦截数据库值为 null 的值。
Rails 似乎允许我设置一个与数据库列同名的方法,但是我需要另一种方法来访问数据库值以返回我想要的。
想象一下,我有一个数据库列“日期”,当它在数据库中为空时,我想将其设置为其他内容。
我想设置一个方法如下
def date
if (alternative_db_value_object).date == nil
"Put this"
else
"Put that"
end
end
或者,如果有人能提出更好的方法,我将不胜感激。
最佳答案
.. 在“日期”方法中,您可以使用
self[:date]
或者
read_attribute(:date)
更新:这似乎不再适用于 rails 5。一个应该使用
super
:def length=(minutes)
super(minutes.to_i * 60)
end
def length
super / 60
end
关于ruby-on-rails - 访问与 Activerecord 访问器分开的数据库值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7914780/