Создание пользователей с has_secure_password - PullRequest
2 голосов
/ 06 января 2012

Я пытаюсь использовать 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, но при этом вызывать этот метод?

1 Ответ

1 голос
/ 06 января 2012

Оказывается, проблема была действительно простой. Поскольку я не добавил: пароль к attr_accessible, это поле не заполнялось, когда я звонил User.create или User.new. Единственное изменение, которое мне нужно было сделать в коде, было

attr_accessible :email, :password
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...