2
將錯誤添加到記錄的錯誤對象,但關聯仍保存。ActiveRecord驗證:即使驗證失敗,關聯也會保存
class Parent < ActiveRecord::Base
validate :valid_child?
#validation methods
protected
def valid_child?
@child_names = Hash.new
self.children.each do |curr_child|
if @child_names[curr_child.name].nil?
@child_names[curr_child.name] = curr_child.name
else
errors.add(:base, "child name should be unique for children associated to the parent")
end
end
end
#associations
has_and_belongs_to_many :children, :join_table => 'map__parents__children'
end
#query on rails console
@parent = Parent.find(1)
@parent.children_ids = [1, 2]
@parent.save
孩子的名字應該是父母的所有孩子都是唯一的。一般兒童的名字可以相同。所以驗證與父母和孩子都有關聯。 validates_associated在這裏不起作用。請推薦一些其他替代方案 –
請參閱我的答案的編輯版本,其中包含有關validates_uniqueness_of的信息。 – gregspurrier