1

Ruby on Rails 3.2.9 を使用しています。カスタムバリデーターを実装しましたが、メソッドを使用するときに (移行ファイルに新しいオブジェクトを作成する際に) 検証をスキップしたいと思いますvalidate。一般に:without_protection => true、メソッドのパラメーターとして使用できますcreate!が、私の場合 (以下のコードを参照) は機能しないようです: 検証はスキップされません。

class Article < ActiveRecord::Base
  validate do
    # custom validation code
  end
end

検証をスキップするにはどうすればよいですか?

4

2 に答える 2

1

これを有効にするには、他のすべての検証が無効になっていることを確認する必要があります。ActiveRecordは検証を選択的に無効にすることはできませんが、完全に省略することはできます。

例えば:

class Article < ActiveRecord::Base
  validate :something,
    :if => :validations_are_turned_on?

  validate :always

protected
  def validations_are_turned_on?
    !@validations_disabled
  end
end

必須ではない検証に適切な:if条件でタグを付けると機能するはずです。この場合、@validations_disabledが設定されていない場合、すべての検証が実行されます。

于 2012-12-14T21:33:32.600 に答える
1

保護がなくても検証はオフにならず、保護された属性を一括で割り当てることができます。検証せずに保存するには:

new_record = Article.new
new_record.save(:validate => false)
于 2012-12-15T02:39:45.577 に答える