我有一个使用mongoid的用户模型。该模型有密码,password_confirmation和encrypted_password字段。 password和password_confirmation字段在运行时填充用户在创建新用户时在屏幕上键入的值。当我坚持使用时,我不想保留未加密的密码值,我只想保留encrypted_password中包含的值。这可能吗?我可以用某些东西来表示某些字段是不可持久的吗?
提前致谢
克里斯
答案 0 :(得分:0)
这是一种方式:
模型只需要密码字段并使用before_filter:
def User
before_save :hash_password
attr_accessible :password, :password_confirmation
def hash_password
#todo: improve by adding a salt
self.password = Digest::SHA1.hexdigest(self.password)
end
end
注意:
hexdigest()
。将salt存储在数据库中 - 比如名为password_salt
。password_confirmation
是一个虚拟属性,不需要在模型中定义(rails将在内部管理细节)