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 がゼロに設定されているようです。
課題オブジェクトの作成を停止する必要がありますが、属性が別のモデル オブジェクトに設定されている場合のみです。
これをvalidate_on_createメソッドに書こうと思ったのですが、そうすると他のオブジェクトに渡す必要があります。
私が考えた最初の解決策は、Issue モデルに追加のフィールドを挿入し、それをフック内で変更することです。
何かのようなもの :
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 は Issue モデルへの追加です
ただし、これはここでの最良のアプローチではないようです。もっと簡単な方法はありますか?