我知道如何检查属性是否有错误:
@post.errors[:title].any?
是否可以检查哪个验证失败(例如“唯一性”)?
最佳答案
通过“taken”,我假设您的意思是该标题已存在于数据库中。我进一步假设您的 Post
模型中有以下行:
validates_uniqueness_of :title
就我个人而言,我认为通过检查验证错误来检查标题是否已经被采用是很脆弱的。
@post.errors[:title]
将返回类似 ["has already been taken"]
的内容。但是,如果您决定更改错误消息或将应用程序国际化,该怎么办?我认为您最好编写一种方法来进行测试:class Post < ActiveRecord::Base
def title_unique?
Post.where(:title => self.title).count == 0
end
end
然后您可以使用
@post.title_unique?
测试标题是否唯一。如果已经有一个 Rubygem 动态地将这样的方法添加到 ActiveRecord 模型,我不会感到惊讶。
关于ruby-on-rails - 验证 : how to check for specific error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7311198/