我有一个模特:
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)
吗?
让我直截了当,谢谢!
答案 0 :(得分:1)
有两个简单的选择......
我个人认为,由于这个模型有一个已定义的关系,需要了解它,我会把它放在预先保存的回调中并完成它。但是,如果您担心保持一个模型独立于另一个模型,您也可以将它放在观察者中。这样,你可以有一个单独的对象,它只是观察预订并处理其他关系。但是,我个人不会选择这条路线,因为您要更新的是预订模型的属性,我认为您的预订模型了解事件并知道如何响应事件属性是完全合理的。