2012-12-19 5 views
1

password_confirmation을 사용하여 사용자 비밀번호를 업데이트하려고합니다.비밀번호 확인으로 사용자 비밀번호 변경

그러나 암호를 올바르게 업데이트하는 방법을 찾을 수 없어서 암호를 password=password_confirmation=으로 설정했지만 changed? 결과를 볼 때 항상 false를 반환합니다.

이 문제를 해결하는 방법에 대한 제안 사항이 있으십니까?

class User < ActiveRecord::Base 
    acts_as_authentic 

    belongs_to :organization 

    # Setup accessible (or protected) attributes for your model 
    attr_accessible :email, :password, :organization_id, :note, :role 

    validates :email, :uniqueness => true 
    validates :role, :inclusion => { :in => Rails.configuration.available_roles } 

    def change_password!(pswd) 
    password = pswd 
    password_confirmation = pswd 
    return changed? && save 
    end 

    def change_password(old_pswd, pswd, confirm_pswd) 
    return false, 'Old password is incorrect' if !valid_password?(old_pswd, true) 
    password = pswd 
    password_confirmation = confirm_pswd 
    # update_attributes([user: [password: pswd, password_confirmation: confirm_pswd]]) 
    print "--------- #{old_pswd} #{pswd} #{confirm_pswd} #{changed?.to_s} ------------" 
    return changed? && save, 'New and confirm password are not correcty' 
    end 
end 

답변

4

당신은 (실제로는 '세터'헬퍼 방법입니다) 속성을 설정하면 self.를 사용할 필요가 : 여기 내 코드입니다 (change_password는 컨트롤러라고, PARAMS이 제대로 나는 인쇄 그들을 본 적이 전달됩니다) 그렇지 않으면 루비는 새로운 로컬 변수를 생성한다고 생각합니다 :

self.password = pswd 
self.password_confirmation = pswd 
+0

오 ** 정말 **?!?! 정말 이상한 일입니다. 그런 일을 모릅니다.하지만 감사합니다. –