attr_accessor :password
attr_accessible :name, :password, :password_confirmation
答案 0 :(得分:6)
答案 1 :(得分:5)
我假设您在Rails项目中使用了身份验证库。密码可能是Rails模型中的“虚拟属性”(例如,数据库表中没有密码列)。您需要使用密码访问器方法将纯文本密码保存在实例变量中,然后可能有一个回调方法,当您的模型可能在另一列中保存在数据库中时,该方法会加密/散列该密码。
答案 2 :(得分:3)
例如,假设您的数据库有一个名为posts
的表。 posts
包含以下字段:
name
,encrypted_password
。你必须遵循Rails模型:
class Post < ActiveRecord::Base
attr_accessor :password
attr_accessible :name, :password, :password_confirmation
end
如果没有attr_accessible
,就可以通过质量分配设置encrypted_password
。基本上使用attr_accessible,您可以指定可以通过质量分配设置哪些属性(在这种情况下,将encrypted_password保留在循环之外。
attr_accessor
在您的类上为给定的名称/符号创建访问器。基本上它为你做的是:
def password= param
@password = param
end
def password
@password
end
我猜你的情况是attr password
用于before_save / create回调。使用password
执行某些操作并设置encrypted_password
。但我只是在这里猜测。
希望有所帮助!