私はテーブルにブール型の列を持ち、それに関連するdatetimeを持っています。ブール値が最初に真になったときに、私は追跡できるようにしたい。モデルでは、私はブール値が最初に真であるときを追跡する方法はありますか?
def example
if boolean_field == true
datetime_field = time.now
end
end
を試してみましたが、それに伴う問題は、ブール値がtrueに設定されている場合で、ブール値は常に一定の状態になりますので、私はページまたはデータベースをリロードするたびに更新し続けるでしょうdatetime_field本当。私はまたして、その上に汚れたレールを使用しようとしている:
boolean_field_changed?
が、その方法は全くのdatetime列を更新するようではありません。P.S私はメソッドのbefore_saveコールバックを持っています。
def returned_time
if self.returned?
returned_at = Time.now
end
end
before_save :returned_time
はfalseからtrueにboolean_fieldの変更がはるかに高く評価されたら、私は最初の時間を節約することができる方法上の任意の助け。ありがとうございます。
このプロセスは、Railsの新しいバージョンで変更されました。どのバージョンのRailsを使用していますか? –
@TomAranda遅く返事して申し訳ありませんが、現在私はレールを使っています5 – LordLJ
'boolean_field_changed?' _before_ saveで呼び出されていれば、 'datetime_field'が更新されるのを防ぐことができますブール値フィールドが変更されたことを示します。 – inveterateliterate