У меня есть пользовательский класс с уникальным адресом электронной почты, но доступным для арендатора:
class User < ActiveRecord::Base
validates :email, :uniqueness => {:scope => :tenant_id, :allow_blank => true}
#...
end
Я пытаюсь проверить его с помощью:
class UserTest < ActiveSupport::TestCase
context "a user" do
setup { @user = create :user }
subject { @user }
should validate_uniqueness_of(:email).scoped_to(:tenant_id)
end
end
, но тестзавершается с этим сообщением:
Ожидаемые ошибки с включением «уже были приняты», если для электронной почты установлено значение «joseph.allen_1@example.com», получены ошибки: [«электронная почта уже получена (\ "joseph.allen_1@example.com \") "," first_name не может быть пустым (nil) "," last_name не может быть пустым (nil) "] (с другим значением tenant_id)
, что вызывает много вопросов.Почему сообщение об ошибке не совпадает?Кажется, потому что фактический адрес электронной почты включен в сообщение об ошибке, но почему он включен?Когда я генерирую ошибку из пользовательского интерфейса, она, кажется, не включается:
Кроме того, в конце он говорит, что пытается с другим арендатором, который, еслиэто было верно, оно не должно генерировать никаких ошибок (это не происходит, когда я запускаю само приложение), но почему оно ожидает ошибку?Следует ожидать ошибки только в том случае, если это тот же tenant_id.
Это так запутанно.Есть идеи, что происходит и / или как правильно это проверить?