ActiveRecord,validates_uniqueness_of:如果我有一个大写方法,名称不会捕获非单一性

Ant*_*nio 2 ruby activerecord ruby-on-rails

我有一个简单的大写方法,这样当用户在乐队页面中提交一个新乐队时,它会返回第一个大写字母.在我的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
Run Code Online (Sandbox Code Playgroud)

因此,如果我输入someband,它会创建它并将其显示为Someband.如果我someband再次打字,ActiveRecord看到它是唯一的,我会得到另一个Someband.它的唯一工作方式是我打字Someband.我该如何解决这种情况?

MZa*_*oza 5

我想你想做的就是这个

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

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

:case_sensitive - 查找完全匹配.忽略非文本列(默认情况下为true).