2

私のPostモデルでは、属性に対していくつかの検証がありますlink

  validates :link, url: true, uniqueness: true

今、私のコントローラで、私は呼び出したいと思います:

@post = Post.new(link: "google.com")
@post.valid?

リンクの形式が正しいかどうかを確認したいのですが、一意性テストはスキップします。どうすればいいですか?

4

2 に答える 2

2

:if => :method_nameメソッドの条件が true の場合にのみ検証を実行する引数を検証に設定できます。あなたの条件が何であれ、そのメソッドに入れてください。

例:

validates :link, :uniqueness => true, :if => :validate_link_uniqueness? #Will only run if validate_link_uniqueness? returns true
validates :link, :url => true # Will always run

def validate_link_uniqueness?
  !new_record? # Insert the conditions that return true if uniqueness should be validated
end
于 2013-03-13T17:22:57.173 に答える
2

そのフィールドにエラーがあるかどうかを確認できます。

@post.errors[:link].blank?
于 2013-03-13T16:42:10.663 に答える