我在编写Redmine插件时遇到了验证问题。Redmine钩子的验证问题
我写的问题模型挂钩,并作为挂钩方法的一部分,我想失效问题的创作,加入了自定义错误:
def controller_issues_new_before_save(context = { })
context[:issue].errors.add(:due_date, "A custom error")
end
对于测试目的,我写了一个覆盖Issue.validate_on_create的补丁,但似乎每次输入validate_on_create时error.count被设置为零。
我需要停止创建问题对象,但仅当某个属性设置为另一个模型对象时。
我想过在validate_on_create方法中写这个,但是我需要将它传递给另一个对象。
我想到的第一个解决方案是在问题模型中插入一个额外的字段,并在钩子内修改它。
喜欢的东西:
def controller_issues_new_before_save(context = { })
context[:issue].can_validate = false
end
def validate_on_create
unless can_validate
errors.add("error", "A custom error")
end
end
其中Issue.can_validate是除了发行模型
然而,这似乎并没有最好的方法在这里。有更容易的方法吗?