簡體   English   中英

Rails具有_destroy的accepts_nested_attributes_for可以跳過狀態驗證

[英]Rails accepts_nested_attributes_for with _destroy can skip presence validation

所以我有一個帶有accepts_nested_attributes_for的典型Rails模型,並且具有在線狀態驗證功能

(片段)

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. 通行證

再次確認無封面

我做錯了嗎? 還有另一種方法可以實現嗎? 還是我如何重新驗證這種情況(例如,在發生保存和銷毀之后,將再次進行驗證以表明結果對象現在無效)?

我找到了解決問題的方法,很正確,保存沒有考慮那些標記為_destroy的對象。

此鏈接可以更好地描述問題,並且也可以找到答案。 http://homeonrails.com/2012/10/validating-nested-associations-in-rails/

基本上,他拒絕了那些標有要銷毀的物品,並計算了剩余的物品。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM