ruby-on-rails - 验证 : how to check for specific error

标签 ruby-on-rails

我知道如何检查属性是否有错误:

@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/

相关文章:

ruby-on-rails - 覆盖Activerecord保存方法好吗?

ruby-on-rails - Rails 3 路由、Yaml 和转义 UTF-8

ruby-on-rails - 在 Rails 模板中读取文件

javascript - 在没有嵌套属性的情况下在 rails 中动态添加字段

ruby-on-rails - Tire + Elasticsearch:如何搜索值范围?

ruby-on-rails - 为html格式设计http基本认证

ruby-on-rails - 如何使用 has_many :through association? 为所有者和成员建模

javascript - Rails 页面特定的 JavaScript : What's the best practice?

ruby-on-rails - 在性别选择中使用 Rails 的 Tinyint 和 select 标签

ruby-on-rails - 如何将字符串列更改为 bigint?