我有一個嵌套的表格結構如下設置一個限制的相關記錄數:嵌套形式
- 列表
- 項目
我運行一個驗證在列表模型中確保每個列表最多隻有10個項目。
validate :max_stack_items
def max_stack_items
if items.size > 10
errors[:base] << "Stack cannot have more than 10 items"
end
這個工作正常90%的時間。我實現了一個功能,讓您可以在列表表單中刪除列表中的項目如下:
<%= f.hidden_field :_destroy %>
<%= link_to "remove item", '#', class: "remove_fields" %>
我有一些關聯的JavaScript,使這種情況發生(對於這個問題並不重要)。
比方說,我已經有10個列表項,我去編輯表單。如果我通過單擊「刪除項目」鏈接刪除其中一個列表項並添加一個新的列表項。驗證失敗,因爲它認爲有超過10個列表項。換句話說,它沒有意識到我已經刪除了一個列表項並且同時添加了另一個列表項(因此仍然只有10個列表項)。
我該如何獲得驗證以考慮同時刪除哪些列表項記錄?
我在考慮驗證必須是沿items.size行 - [關於標記爲刪除的項目的數量> 10 – Alex
列表的驗證在項目被銷燬之前發生 – Alex