我坚持这一点,问题/答案太深,或者不符合我的概率。我认为我的问题很容易通过RoR和rails的标准问题来解决。我还没有找到我的导轨'我得到了它'
想象一下(抽象情况)我想存储密码(不,我不在rl中)。我有一个(ID), name, password_clear, password_hash
的表密码。
那么我想做什么/有:
如果有人在任何视图中触及password_clear
我想要错误
我有一个附加password
(字段?)用于更新;我带的这个
class Passdata < ActiveRecord::Base
attr_accessible :name,:password
def password
'********'
end
...
但是在更新?如果密码已更改,我想更新password_clear, password_hash
并解除password
所以我卡住了
请在哪里找到文件!
答案 0 :(得分:0)
PREMISE 我不喜欢用这种代码阻塞ActiveRecord对象。但是,这仍然是仍然是“Rails Way”
我还假设,通过“触摸”,您打算“访问”,并且只想在password_clear
上更新password_hash
和#save
。
class Passdata < ActiveRecord::Base
attr_accessible :name
def password
'********'
end
def password=(value)
write_attribute(:password_clear, @password)
self.password_hash = @password
end
def password_hash=(value)
# do some kind of hashing
end
# noone can access password_clear in a canonical way
def password_clear
raise Passdata::AccessDenied.new
end
end
class Passdata::AccessDenied < StandardError; end
您可以选择使用before_save
挂钩来更新密码。
但是,您确实不应将用户的明确密码存储在数据库中!那就是糟糕的代码......