2011-08-03 6 views
10

Tôi cố gắng để sử dụng đường ray 3.1 xác thực sử dụng mongoid thay vì mô hình hoạt độngMongoid và has_secure_password

class User 
    include Mongoid::Document 
    include ActiveModel::SecurePassword 
    has_secure_password 
    validates_presence_of :password, :on => :create 
    attr_accessor :email, :password, :password_confirmation 
    field :email, :type => String 
    field :password_digest, :type => String 
end 

vấn đề được password_digest không được công nhận bởi các bycrypt như trong mô hình hoạt động ví dụ http://railscasts.com/episodes/270-authentication-in-rails-3-1

Cảm ơn

Trả lời

3

Đặt

has_secure_password 

Sau

field :password_digest, :type => String 
+7

Đây không phải là câu trả lời đúng. Bạn cần phải bao gồm ActiveModel :: SecurePassword như Adam chỉ ra dưới đây. –

32

Đối với bất cứ ai quan tâm, yêu cầu tối thiểu nhất cho việc sử dụng has_secure_password với Mongoid chỉ đơn giản là sự bao gồm của ActiveModel::SecurePassword trong mô hình.

class User 
    include Mongoid::Document 
    include ActiveModel::SecurePassword 

    field :username 
    field :password_digest 

    has_secure_password 
end 

Article