0
我有一個模型,人,需要一個時間表,如果它的類型是「計劃」。在它的控制器(從InheritedResources::Base
繼承):如何有條件地驗證1-1模型關係?
def create
super do
@person.schedule = Schedule.create params[:schedule] if @person.scheduled?
end
end
的事情是,我想驗證「定式」的所有的人都有一個時間表。例如:
validates :schedule, :presence => true, :if => :scheduled?
在Person模型中。但是因爲時間表belongs_to
一個人,它需要創建人之前創建自己(因此該人將有一個ID)。因此,在我的控制器中,人員驗證失敗,因爲日程安排需要稍後創建。
在我不知道的Rails中是否有某些東西可以讓我執行這些驗證?如果我使用accepts_nested_attributes_for
,那麼這些驗證是否會通過?
Person對象獲取調用'創建超級「,所以當這個時候沒有時間表的時候,驗證會在那個時候失敗國家統計局。但是,如果我在創建密鑰之前構建計劃對象,則計劃將沒有正確的人員引用(因爲此人尚未創建,它沒有ID)。 –
如果在超級調用中創建person對象,則最好更改動作邏輯。 「Sheduled?」檢查必須在人員被保存之前進行。您可以向我們展示此操作的完整代碼和超級操作,以使其更清晰。 –