ruby-on-rails - ActiveRecord,validates_uniqueness_of :name not catching non-uniquness if I have a capitalize method

标签 ruby-on-rails ruby activerecord

我有一个简单的大写方法,这样当用户在乐队页面中提交一个新乐队时,它会将第一个字母大写。 在我的 Band 类中,我还有一个 validates_uniqueness_of :band_name 来查看是否已经有一个具有相同条目的 band 。见下面的代码:

  class Band < ActiveRecord::Base
    has_and_belongs_to_many :venues
    validates :band_name, :presence => true
    before_save :title_case
    validates_uniqueness_of :band_name

  private

    def title_case
      self.band_name.capitalize!
    end

  end

因此,如果我输入 someband,它会创建它并将其显示为 Someband。如果我再次键入 somebandActiveRecord 会将其视为唯一,我将获得另一个 Someband。它工作的唯一方法是如果我键入 Someband。我该如何补救这种情况?

最佳答案

我想你想做的是这个

validates_uniqueness_of :band_name, :case_sensitive :false, allow_blank: false

看看http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html

:case_sensitive - Looks for an exact match. Ignored by non-text columns (true by default).

关于ruby-on-rails - ActiveRecord,validates_uniqueness_of :name not catching non-uniquness if I have a capitalize method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32281003/

相关文章:

ruby-on-rails - 我可以同时安装 Ruby on Rails 2.x 和 Ruby on Rails 3 吗

ruby-on-rails - 如何在Ruby in Rails中使用外部API

ruby-on-rails - 有没有办法收集if?

javascript - Rails : Infinite Scroll, 加载微调器而不是文本

ruby-on-rails - 模型的 Rails 查询部分

codeigniter - 在 codeigniter 使用事件记录中更新限制为 1

ruby-on-rails - Rails 空 bool 值?

javascript - 如何在 jquery/rails 中渲染新字段?

ruby-on-rails - 使用 ISO 的国家代码验证

ruby-on-rails - 别名表名,以方便 3 列连接表(MySQL 或 PostgreSQL)