我有Booking
的模型has_many: appointments
。创建Booking
后,我也会创建一些Appointments
。
Appointments
有一个属性date
,需要在创建后填充。例如。 before_save :set_date
。
然后我需要在创建Booking
时进行验证,以检查约会是否是连续的,这需要每次约会的日期。
Booking
初始化Appointments
初始化Appointments
设置了date
属性Booking
。问题是,当验证发生时,日期尚未设置。这是有道理的,因为date
设置在before_save
Appointment
上,而保存尚未发生。
所以我将before_save
更改为after_initialise
。在这种情况下,填充日期所需的Appointment
的其他属性(特别是Block
的外键)尚未分配给约会。
我希望在设置外键的after_initialise
之间但在before_save
之前进行回调。这可能吗?
答案 0 :(得分:2)
我建议使用before_validation
回调。如果您添加新的验证并且您需要设置此日期,则不希望每次都调用set_date
,或者搜索首次调用的验证。
答案 1 :(得分:0)
我通过在验证开始时显式调用set_date
函数来解决这个问题,而不是通常调用它。