Ruby检测列值​​是否已更改

时间:2013-05-09 14:41:14

标签: ruby ruby-on-rails-3

所以我有这句话:

if self.company_changed?

它工作正常,但这可以检测公司是否已更改对象。我需要知道数据库值是否已更改,而不是内存中的值是否已更改。所以我尝试了这个:

if :company_changed?

当我只执行一行时,这似乎在调试模式下工作。如果我让它运行,它就无法在无限循环上进行测试。

我的问题是可以在ruby中使用什么来检查列值是否实际发生了变化。

2 个答案:

答案 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