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.price并且event在模型中没有任何意义。我真的想Event.find(event_id)在另一个对象的模型中查询数据库吗?

让我直截了当,谢谢!

4

1 回答 1

1

有两个简单的选择...

就我个人而言,由于该模型具有已定义的关系并且需要了解它,因此我会将其放入预保存回调中并完成它。但是,如果您关心保持一个模型独立于另一个模型,您也可以将其放置在观察者中。这样,您可以拥有一个单独的对象,它仅观察保留并处理其他关系。但是,我个人不会选择走这条路,因为您要更新的是预订模型的属性,我认为您的预订模型了解事件并知道如何响应事件属性是完全合理的。

于 2013-01-30T03:07:45.417 回答