2

在我的Post模型中,我有几个属性验证link

  validates :link, url: true, uniqueness: true

现在,在我的控制器中,我想调用:

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

我想检查链接是否格式正确,但要跳过唯一性测试。我该怎么做?

4

2 回答 2

2

您可以检查该字段是否有错误:

@post.errors[:link].blank?
于 2013-03-13T16:42:10.663 回答
2

您可以:if => :method_name在验证上设置一个参数,这将导致该验证仅在方法中的条件为真时运行。把你的条件放在那个方法中。

例子:

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 回答