У меня есть модель 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 вызывает это странное поведение. Но я даже не представляю, как это решить. Есть идеи?