在我的Post
模型中,我对属性link
进行了几次验证
validates :link, url: true, uniqueness: true
现在,在我的控制器中,我想打电话:
@post = Post.new(link: "google.com")
@post.valid?
我想检查链接格式是否正确,但是要跳过唯一性测试。我该怎么做?
答案 0 :(得分:2)
您可以检查该字段是否有错误:
@post.errors[:link].blank?
答案 1 :(得分: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