我有一个模型Todo
,带有自我引用的父母和孩子
has_and_belongs_to_many :children, class_name: "Todo", join_table: "todos_todos", foreign_key: "parent_id", association_foreign_key: :child_id
has_and_belongs_to_many :parents, class_name: "Todo", join_table: "todos_todos", foreign_key: "child_id", association_foreign_key: :parent_id
我想对它们两者执行before_add
之类的操作会产生验证错误。我已尝试before_add: [:parent_due_after_or_on_self]
def parent_due_after_or_on_self(parent)
if parent.due < self.due
self.errors.add(:parents, "Parent cannot be due before child")
end
end
但这没有任何作用。我已经尝试在添加错误后立即添加raise "Parent cannot be due before child"
,这会让我收到错误消息,但现在我无法挽救它以将用户返回到表单以修复错误。我是积极的我本周早些时候就开始工作了,但是我已经丢失了代码并且无法记住它的确切含义。
答案 0 :(得分:0)
@ meagar♦写道 Rails 4 HABTM custom validation on associations,没有有效的方法可以对HABTM关联使用验证。
在我看来,最好的选择是使用has_many :through =>
,并使用您的连接模型(在您的情况下 TodosTodo )进行验证。