所以我有这句话:
if self.company_changed?
它工作正常,但这可以检测公司是否已更改对象。我需要知道数据库值是否已更改,而不是内存中的值是否已更改。所以我尝试了这个:
if :company_changed?
当我只执行一行时,这似乎在调试模式下工作。如果我让它运行,它就无法在无限循环上进行测试。
我的问题是可以在ruby中使用什么来检查列值是否实际发生了变化。
答案 0 :(得分:2)
我很确定你实际上是在谈论ActiveRecord。在这种情况下,您需要重新获取记录以查看数据库中的值是否已更改。
self.class.find(self.id).company != self.company
这种通用方法可能类似于:
def attr_changed_in_db?(attr)
self.class.find(self.id).attributes[attr] != self.attributes[attr]
end
答案 1 :(得分:1)
伟大的瑞安贝茨有一个excellent screencast。