2012-11-20 71 views
0

我正在研究一项功能,其中我必须手动更新数据库中的所有帐户详细信息。它工作正常,但唯一的问题是,既然我们还使用了登录功能的色器件宝石。我必须存储手动更新密码的加密格式。所以我只想知道设计宝石如何加密密码。Rails:设计宝石密码加密

如果我的密码是“密码”。我必须手动加密这个数据库,并将其存储在数据库中,方法与设计相同。

请尽快恢复帮助。

回答

3

我假设您有一个用户名/密码列表,您希望将其大量分配到数据库中以便在通过Devise进行身份验证的应用程序中使用。

制定默认使用BCrypt,(还有一个宝石)

require 'bcrypt' 

class User < ActiveRecord::Base 
    # users.password_hash in the database is a :string 
    include BCrypt 

def password 
    @password ||= Password.new(password_hash) 
end 

def password=(new_password) 
    @password = Password.create(new_password) 
    self.password_hash = @password 
end 

end 

您可以在列表中创建用户的实例,并保存到数据库中Rake任务,例如。

@user = User.new 
@user.username = "foobar" 
@user.password = "password" 
@user.save 
+0

谢谢。它的工作现在。 – Karthikds

+0

我不工作:( – ashwintastic