Лишние ошибки на модели откуда-то - PullRequest
0 голосов
/ 12 апреля 2010

У меня есть модель User, и я использую acts_as_authentic (от authlogic) на ней. Моя User модель имеет 3 проверки на username и выглядит следующим образом:

User < ActiveRecord::Base

  acts_as_authentic

  validates_presence_of   :username    
  validates_length_of     :username, :within => 4..40 
  validates_uniqueness_of :username

end

Я пишу тест, чтобы увидеть мои проверки в действии. Почему-то я получаю 2 ошибки вместо одной при проверке уникальности имени. Чтобы увидеть лишнюю ошибку, я делаю следующий тест:

describe User do
  before(:each) do
    @user = Factory.build(:user)
  end

  it "should have a username longer then 3 symbols" do
    @user2 = Factory(:user)
    @user.username = @user2.username
    @user.save

    puts @user.errors.inspect
  end
end

Я получил 2 ошибки на username: @errors={"username"=>["has already been taken", "has already been taken"]}.

Другой случай проблемы - когда я устанавливаю имя пользователя на nil. Каким-то образом я получаю четыре ошибки проверки вместо трех: @errors={"username"=>["is too short (minimum is 3 characters)", "should use only letters, numbers, spaces, and .-_@ please.", "can't be blank", "is too short (minimum is 4 characters)"]}

Я думаю, что authlogic вызывает это странное поведение. Но я даже не представляю, как это решить. Есть идеи?

1 Ответ

0 голосов
/ 12 апреля 2010

Я думаю, это потому, что authlogic имеет некоторую встроенную валидацию, и они и ваши валидации выполняются.

Google , кажется, дает некоторые ответы на эту тему. Это , например, для поля пароля.

...