0

Rails 3.2でフルネームの一意性を検証するにはどうすればよいですか?

class User < ActiveRecord::Base
    attr_accessible :first_name, :last_name

    validates :name, :uniqueness => true

    def name
        [first_name, last_name].join(' ')
    end
end

rspecを実行すると、このエラーでテストが失敗します。

  1) User has a first name
     Failure/Error: before { @user = FactoryGirl.create(:user) }
     NoMethodError:
       undefined method `text?' for nil:NilClass
4

1 に答える 1

1

解決策1:

validates :first_name, :uniqueness => { :scope => :last_name, :message => "name is uniq" }

解決策2:解決策2:

class Person < ActiveRecord::Base
  validates_with GoodnessValidator, :fields => [:first_name, :last_name]
end

class GoodnessValidator < ActiveModel::Validator
  def validate(record)
    if options[:fields].any?{|field| record.send(field) == "Evil" }
      record.errors[:base] << "This person is evil"
    end
  end
end
于 2012-12-12T05:42:51.047 に答える