У меня есть такая модель:
class User < ActiveRecord::Base
validates_length_of :name, :in => (2..5)
end
Я хочу проверить это подтверждение:
it "should not allow too short name" do
u = User.new(:name => "a")
u.valid?
u.should have(1).error_on(:name)
end
Но тогда он не проверяет, какая ошибка была установлена на name
. Я хочу знать, если это было too_short
, too_long
, или, возможно, какая-то другая проверка не удалась.
Я могу найти текст сообщения в массиве ошибок, например:
u.errors[:name].should include(I18n.t("activerecord.errors.models.user.attributes.name.too_short"))
Но это не удастся, если я установил activerecord.errors.messages.too_short
в файл локали вместо сообщения, специфичного для модели.
Итак, можно ли проверить, какая ошибка произошла?