2015-03-25 73 views
0

我有一個模型Bookinghas_many: appointments。當創建Booking時,我也創建了一些Appointmentsafter_initialize和before_create之間回調

Appointments有一個屬性date需要在創建它之後進行填充。例如。 before_save :set_date

然後,我需要在Booking上進行驗證,以檢查約會是否順序,這需要每個約會的日期。

  1. Booking初始化
  2. Appointments初始化
  3. Appointments有其date屬性設置
  4. 驗證Booking

問題是,當驗證發生時,日期尚未設置。這很有道理,因爲dateAppointment上設置爲before_save,並且保存尚未發生。因此我將before_save更改爲after_initialise。在這種情況下,需要填入日期的Appointment的其他屬性(特別是Block的外鍵)尚未分配給約會。

我想要在after_initialise之間設置外鍵,但在before_save之前的回調。那可能嗎?

回答

2

我建議使用before_validation回調。如果添加新的驗證,並且您需要設置此日期,則不需要每次調用set_date,或者搜索第一次調用的驗證。

0

我通過在驗證開始時明確地調用set_date函數來解決這個問題,在它通常被調用的地方之前。

相關問題