【问题标题】:rails 3.1 partial_updates doesn't seem to work with passwordrails 3.1 partial_updates 似乎不适用于密码
【发布时间】:2012-04-21 04:00:37
【问题描述】:

我有一个带有密码属性的用户模型,它被保存为密码摘要。 我想要做的是将编辑用户页面和编辑密码页面分开,这样 管理员每次需要更改其他内容时都不需要输入密码。为此,我做了一个额外的动作/视图。

我的问题是,当我更新用户信息时,即使密码验证错误 我在表单中没有密码字段。这使我得出的结论是 partial_updates 不能使用密码属性(因为我已经在控制台中测试它已启用,并且确实如此)

这是我做错了什么,还是我应该以不同的方式处理?

【问题讨论】:

    标签: ruby-on-rails passwords


    【解决方案1】:

    类似于@normalocity 提到的railscasts 方法,但不需要在控制器中设置伪属性,我们这样做(本质上取自restful_authentication):

    attr_accessor :password
    
    validates :password,
              :length => { :minimum => 8 },
              :confirmation => true,
              :presence => true,
              :if => :password_required?
    
    def password_required?
      password_digest.blank? || !password.blank?
    end
    

    基本上,我们假设如果password_digest 尚未设置(对于新记录),或者如果password 伪属性已设置,那么这意味着密码正在更改并且验证必须运行。所以我们不需要像在 railscasts 剧集中那样设置 updating_password 伪属性。

    【讨论】:

      【解决方案2】:

      只有在更改密码时才需要验证密码。如果未更改,则应跳过对 password 字段的验证。

      Railscasts.com episode #41 向您展示了如何做到这一点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-02-26
        • 2022-06-13
        • 2014-07-13
        • 2014-01-19
        • 1970-01-01
        • 1970-01-01
        • 2020-04-04
        相关资源
        最近更新 更多