一部の db フィールドの値が取得された直後に非 db フィールドを設定できるアクティブなレコード コールバックはありますか? 非 db フィールドの値を計算する必要があるため、データベースの取得後にそれを行う必要があります。
これを行う他の方法も歓迎します。具体的には、データベース以外の days_ago フィールドがあり、created_at が使用可能になった後にのみ作成したいので、モデル クラス内でこれを行う必要があります。
一部の db フィールドの値が取得された直後に非 db フィールドを設定できるアクティブなレコード コールバックはありますか? 非 db フィールドの値を計算する必要があるため、データベースの取得後にそれを行う必要があります。
これを行う他の方法も歓迎します。具体的には、データベース以外の days_ago フィールドがあり、created_at が使用可能になった後にのみ作成したいので、モデル クラス内でこれを行う必要があります。
使用する必要がありますafter_find:
after_find :set_days_ago
def set_days_ago
self.days_ago = DateTime.now - self.created_at.to_datetime if self.created_at
end
「遅延ロード」days_agoフィールドが必要なようです。days_agoモデルに次のようなメソッドを追加して、実際に必要な場合にのみ値を計算する必要があります。
def days_ago
return nil unless created_at?
@days_ago ||= ... # (calculation involving created_at)
end
を初めて呼び出すとdays_ago、値が計算され、値が@days_ago変数にキャッシュされます。2 回目に呼び出すと、キャッシュされた値が返されます。