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 errors.countを入力するたびに0に設定されているようです。
問題オブジェクトの作成を停止する必要がありますが、属性が別のモデルオブジェクトに設定されている場合に限ります。
私はvalidate_on_createメソッドでこれを記述しようと考えましたが、もう一方のオブジェクトに渡す必要があります。
私が考えた最初の解決策は、Issueモデルに追加のフィールドを挿入し、フック内で修正することです。以下のような
何か:
Issue.can_validateが発行モデルに加えている
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
はしかし、これはここに最善のアプローチを思えません。簡単な方法がありますか?