Tôi có một mô hình Dự án chấp nhận các thuộc tính lồng nhau cho Tác vụ.validates_uniqueness_of trong đường ray mô hình lồng nhau bị phá hủy
class Project < ActiveRecord::Base
has_many :tasks
accepts_nested_attributes_for :tasks, :allow_destroy => :true
end
class Task < ActiveRecord::Base
validates_uniqueness_of :name end
Xác thực tính duy nhất trong Mô hình nhiệm vụ đưa ra sự cố khi cập nhật Dự án.
Khi chỉnh sửa dự án, tôi xóa một nhiệm vụ T1 và sau đó thêm một nhiệm vụ mới có cùng tên T1, xác thực tính duy nhất hạn chế việc lưu dự án.
params băm nhìn cái gì đó như
task_attributes => { {"id" =>
"1","name" => "T1", "_destroy" =>
"1"},{"name" => "T1"}}
Validation vào nhiệm vụ được thực hiện trước khi phá hủy công việc cũ. Do đó xác nhận không thành công. Bất kỳ ý tưởng làm thế nào để xác nhận như vậy mà nó không xem xét nhiệm vụ bị phá hủy?
Chỉ tò mò Tại sao bạn không cập nhật tác vụ cũ thay vì xóa cũ và tạo nhiệm vụ mới có cùng tên. – Salil
Bạn có nghĩa là tôi cần phải đi qua nhiệm vụ cũ và kiểm tra xem có bất kỳ nhiệm vụ cũ với tên giống như nhiệm vụ mới nhưng đó là đánh dấu để bị phá hủy và sau đó chỉ cần cập nhật nhiệm vụ cũ? – arun
Arun ... đây chỉ là một trường hợp thử nghiệm (thêm một nhiệm vụ có cùng tên với tác vụ khác mà bạn đang xóa) hoặc bạn đang làm điều này trên mọi nghĩa sửa, xóa nhiệm vụ và tạo lại chúng. – concept47