デフォルトの検証と、デフォルトの検証をオーバーライドできるサブクラスを備えたスーパークラスが必要です。
class Foo < ActiveRecord::Base
FIELDS = [:field1, :field2]
after_initialize :include_rules
def include_rules
FIELDS.each do |field|
self.class.send(:validates, field, presence: true)
end
end
end
スーパークラスから継承されるサブクラスを無視しています...
フォームが送信されるたびに after_initialize が呼び出され、検証が繰り返されます。
つまり、フォームを 4 回送信します。
出力:
field1 can't be blank
field1 can't be blank
field1 can't be blank
field1 can't be blank
field2 can't be blank
field2 can't be blank
field2 can't be blank
field2 can't be blank
検証を一度だけロードする簡単な方法はありますか?メソッドでそれらを呼び出すことからですか?