2012-04-08 53 views
0

工作,我有一个密码属性,它被保存为password_digest用户模型。 我想要做的是有用户编辑页面,分离编辑密码页面,使 管理员不需要输入他需要别的东西更改密码每次。为此我做了一个额外的行动/观点。轨3.1 partial_updates似乎没有与密码

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

这是我做错了什么,或者我应该这样做不同?

回答

0

到railscasts类似的方法由@normalocity提及,但无需在控制器设置伪属性,我们这样做(这基本上是从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伪属性。

0

你只需要校验,如果它被更改了密码。如果没有更改,则应该跳过password字段的验证。

Railscasts.com episode #41告诉您如何做到这一点。