0

だから私はこの行を持っています:

if self.company_changed?

それは正常に動作しますが、これは会社がオブジェクトで変更されたかどうかを検出します。メモリ内の値が変更されたかどうかではなく、データベースの値が変更されたかどうかを知る必要があります。だから私はこれを試しました:

if :company_changed?

1行だけ実行すると、これはデバッグモードで機能するようです。実行すると、無限ループでのテストに失敗します。

私の質問は、列の値が実際に変更されたかどうかを確認するために ruby​​ で使用できるものです。

4

2 に答える 2

2

I'm pretty sure you're actually talking about ActiveRecord. In which case, you'd need to re-fetch the record to see if the value has changed in the database.

self.class.find(self.id).company != self.company

A general purpose method for this might be something like:

def attr_changed_in_db?(attr)
  self.class.find(self.id).attributes[attr] != self.attributes[attr]
end
于 2013-05-09T14:45:48.487 に答える