2
我有列表模型有很多項目。這些項目有一個priority
,在列表範圍內是唯一的。重新排序ActiveRecord Association中的唯一有序模型
class List < ActiveRecord::Base
has_many :items
accepts_nested_attributes_for :items
end
class Item < ActiveRecord::Base
validates :priority, uniqueness: { :scope => :list_id }
end
所以,如果我從API調用返回一個給定的列表,它看起來像這樣:
{
items: [
{ "id": 1, "priority": 1 },
{ "id": 2, "priority": 2 },
{ "id": 3, "priority": 3 }
]
}
用戶重新排列在前端的項目,它使一個PUT
請求到服務器
{
items_attributes: [
{ "id": 1, "priority": 3 },
{ "id": 2, "priority": 1 },
{ "id": 3, "priority": 2 }
]
}
但這會失敗。當這些嘗試中的一個保存時,它將檢查是否存在具有相同列表ID和優先級的另一項目。由於其他項目尚未在數據庫中更新,因此此驗證將失敗。
我該如何實現此更新?