1

私はモデルを持っています:

class Reservation < ActiveRecord::Base
  #  amount_received :integer
  #  event_id        :integer
  #  confirmed_at    :datetime
  belongs_to :event

私は次のようなことをしたいと思います:

`self.confirmed_at = Time.zone.now if amount_received >= event.price`

amount_receivedが変更されるたびにモデル内で(または、モデルが保存されるたびにだと思いますか?)。しかし、これを Rails アプリのどこに配置すればよいかわかりませんか?

モデルの状態を変更しているため、モデルに参加したいのですが、関連するモデルの値に依存し、モデルevent.priceeventは何も意味しません。Event.find(event_id)別のオブジェクトのモデルでDB にクエリを実行したいですか?

私をまっすぐにしてください、ありがとう!

4

1 に答える 1

1

2つの簡単なオプションがあります...

個人的には、このモデルには定義済みのリレーションがあり、それについて知る必要があるため、保存前のコールバックに入れて処理を完了します。ただし、あるモデルを別のモデルから独立させておくことに関心がある場合は、これをオブザーバーに配置することもできます。そうすれば、単に予約を監視し、他の関係を処理する別のオブジェクトを持つことができます。ただし、更新しているのは予約モデルのプロパティであり、予約モデルがイベントを認識し、イベントプロパティに応答する方法を知っていることは完全に合理的だと思います。

于 2013-01-30T03:07:45.417 に答える