luk3thomas
luk3thomas

Reputation: 2612

Rails validate model method

How can I validate the uniqueness of a full name in 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

When I run rspec the test fails with this error.

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

Upvotes: 0

Views: 295

Answers (1)

Vikram Jain
Vikram Jain

Reputation: 5588

Solution 1:

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

Solution 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

Upvotes: 1

Related Questions