Ruby on rails 覆盖where-Rails 5.1上的属性值

Ruby on rails 覆盖where-Rails 5.1上的属性值,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,您好,我需要在我自己的实现中设计并查询用户。其中(:password=>'password')但密码是加密和加密的。覆盖这种行为的“轨道”方式是什么?我试过使用attr_书写器 def password=(pass) super(hashpassword(pass)) end 但是没有成功,我仍然看到选择'users'。*从'users'中选择'users'。'password'='non-salted password'LIMIT 11 有什么建议吗?多谢各位 重要 我不是在用Desi

您好,我需要在我自己的实现中设计并查询
用户。其中(:password=>'password')
但密码是加密和加密的。覆盖这种行为的“轨道”方式是什么?我试过使用attr_书写器

def password=(pass)
   super(hashpassword(pass))
end
但是没有成功,我仍然看到
选择'users'。*从'users'中选择'users'。'password'='non-salted password'LIMIT 11

有什么建议吗?多谢各位

重要

我不是在用Desive

关于解决方案

经批准的解决方案是使用本机的“身份验证”方法,我必须将数据库中的密码字段更改为密码摘要,并且该方法有效。

有一种方法可用于此。这对我来说很有效

authenticate
的使用方法如下:

user = User.new(password: 'hash-of-the-password')
user.save
user.authenticate('not-the-password')      # => false
user.authenticate('password') # => user
has_secure_password
需要一个名为
password_digest
的列(尽管您可以覆盖该列),在有人注册密码/密码确认后,该列将填充一个散列

希望能有所帮助-如果您还需要什么或有任何问题,请告诉我。

有一种方法可以解决此问题。这对我来说很有效

authenticate
的使用方法如下:

user = User.new(password: 'hash-of-the-password')
user.save
user.authenticate('not-the-password')      # => false
user.authenticate('password') # => user
has_secure_password
需要一个名为
password_digest
的列(尽管您可以覆盖该列),在有人注册密码/密码确认后,该列将填充一个散列


希望这能有所帮助-如果您还需要什么或有任何问题,请告诉我。

事实上,我不确定您要的是什么??如果没有,请告诉我,我将删除此内容。这直接来自ActiveModel:)您可以在Rails中获取它-使用
时具有\u secure\u密码,我会将其添加到我的答案中:)欢迎-乐意帮助!事实上,我不确定你在找什么??如果没有,请告诉我,我将删除此内容。这直接来自ActiveModel:)您可以在Rails中获取它-使用
时具有\u secure\u密码,我会将其添加到我的答案中:)欢迎-乐意帮助!