2
我在驗證一些複雜關聯中的兩個對象時遇到困難。這裏是什麼,我有一個例子:如何處理關聯對象之間的驗證?
car.rb
class Car
has_many :passengers
end
passenger.rb
class Passenger
belongs_to :car
belongs_to :info
end
驗證我需要做的:
- 數的乘客數量有限
- 乘客擁有一個名爲
Info
的對象的關聯,該對象具有「僱主」作爲字符串。所有乘客必須擁有相同的僱主。
界面有一個多選框可以選擇乘客。一旦你選擇了乘客,你點擊「創建」(或「更新」,這是它自己的一套問題)。
當控制器嘗試創建Car
時,它需要運行汽車驗證,然後需要通過乘客驗證(僱主檢查),然後汽車還需要確保它不超過乘客數。如果其中一個失敗,我需要重置並將它們帶回新頁面。
在更新期間,如果失敗,我需要將原來的乘客恢復到車上。我不確定如何執行驗證,但實際上並未將對象保存到數據庫。另外,一旦對象被保存到數據庫中,如果驗證失敗,那麼我不知道如何恢復以前的乘客。
如何在將相關對象保存到數據庫之前對其進行驗證?
這爲我工作。我能夠使用自定義驗證,但我最終還是使用'accep_nested_attributes_for'和'allow_destroy'選項。 – ardavis