Я пытаюсь использовать has_secure_password в моей пользовательской модели, но обнаружил, что, пока он работает в приложении, он ломает все мои тесты.У меня есть простая модель пользователя:
class User < ActiveRecord::Base
has_secure_password
attr_accessible :email
validates :email, :presence => true,
:format => { :with => /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i },
:uniqueness => { :case_sensitive => false }
validates :password, :presence => true
end
Мой первый тест (rspec) просто подтверждает, что я могу создать нового пользователя с допустимыми атрибутами:
describe User do
before(:each) do
@attr = { :forename => "Captain",
:surname => "Hook",
:email => "email@test.com",
:password => "password",
:password_confirmation => "password" }
end
it "should create a new instance given valid attributes" do
User.create!(@attr)
end
end
Это не работает,однако, когда я делаю
user = User.new(@attr);
user.password = "password";
user.save
, все работает нормально.Я полагаю, что это потому, что has_secure_password добавляет новый метод, пароль, который имеет дело с генерацией password_digest
, поэтому вызов его напрямую, как это, генерирует поля, которые мне нужны.Можно ли как-нибудь использовать User.create, но при этом вызывать этот метод?