【问题标题】:Devise add to password change设计添加到密码更改
【发布时间】:2015-12-19 21:32:30
【问题描述】:

我想在用户更改密码后为其更改一个简单属性。

我有一个名为“password_changed”的用户属性,默认值为 false,但希望在他们更改密码后将其更改为 true。这样做是创建自定义设计密码编辑的唯一方法吗?像这样(https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-edit-their-password)。或者我可以在设计注册控制器上扩展更新方法,例如:

def update
current_user.password_changed = true
current_user.save
end

【问题讨论】:

    标签: ruby-on-rails ruby devise


    【解决方案1】:

    您可以为您的User 模型使用after_save 回调:

    after_save :password_changed_callback, if: Proc.new { |record| record.persisted? && record.password_changed? }
    

    【讨论】:

    • 这属于哪里?关于 RegistrationController 的更新方法?
    • 不,这是您的用户模型的回调。更好的方法是在模型级别执行此操作。
    • 感谢您的回复。你介意花一点时间解释一下这条线的作用吗?
    • 一点也不。您最好阅读一些有关回调的文档。你可以从这里开始:api.rubyonrails.org/classes/ActiveRecord/Callbacks.html
    • 在我看来,它会在每次保存用户模型后调用“password_changed_callback”的回调方法。我不知道 if 语句是做什么的
    猜你喜欢
    • 2012-06-22
    • 2014-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-12
    相关资源
    最近更新 更多