2014-01-15 104 views
1

所以我有一個典型的Rails模型accepts_nested_attributes_for與存在驗證Rails的accepts_nested_attributes_for與_destroy可以跳過存在驗證

(片段)

class Book < ActiveRecord::Base 
    ... 

    has_one :cover 
    accepts_nested_attributes_for :cover, allow_destroy: true 

    validate :require_cover 

    def require_cover 
    errors.add('', 'You must have a cover for the book.') if self.cover.blank? 
    end 

    ... 
end 

這工作和驗證上時,我的第一步好嗎創建。但是,當我嘗試編輯它並單擊封面上的刪除(單擊刪除添加_destroy true)並保存它時,它會刪除封面,但已經通過了有關存在的驗證。

我認爲,事情的經過是:

  1. 標記破壞蓋
  2. 驗證過程中發生的(認爲還有包括(但也許不承認銷燬))
  3. 有效,去拯救
  4. 節省書和
  5. 通過

沒有再次驗證有關無覆蓋

我是否做得不正確?有沒有另外一種方法來實現這一點?或者,我如何重新驗證這種情況(例如,在發生保存和銷燬之後,會有另一個驗證說現在的對象現在是無效的)?

回答