私は、ユーザーにパスワードをリセットするための電子メールを送るために新しいトークンを割り当てるreset_tokenメソッドを持つメンバモデルを持っています。しかし、update_attributeはデータベースに何も保存しません。私は持っています:attr_accessibleとattr_accessorにnew_password_tokenを割り当てました。ログには、塩とトークンを拾うが、それは常に、それが呼び出されるRails 3 update_attributeが起動しない
def self.reset_token(email)
member = find_by_email(email)
if member
#Reset token, and then send email
salt = BCrypt::Engine.generate_salt
logger.error "Salt is #{salt}"
token = BCrypt::Engine.hash_secret(email, salt)
logger.error "token is #{token}"
if member.update_attribute(:new_password_token, token)
member
end
end
nil
end
コントローラメソッドnilを返します。
def reset_password
@member = Member.reset_token(params[:email])
if @member
redirect_to(root_url, :notice => "Please check your email for instructions")
else
redirect_to(root_url, :notice => "Sorry we have no record of your account")
end
end
'nil'が最後のステートメントであるため、' nil'を返します。 'return member'を呼び出すか、メソッドから' nil'を取り除きます。 'update_attribute'については、検証ではないと確信していますか? –
'else member'のように' else member'文を 'if member.update ....'の行の後に追加することができます。 –
さて、それ以上は何も返されない(私はそれがメンバーに戻ってくると思っていたと思います...あなたは正しいナッシュでした)。今問題は、データベースに保存しないことです。私はそれをupdate_attributesに変更しようとしましたが、ドット表記で変数を設定してからmember.saveを呼び出そうとしましたが、まだ何らかの理由で保存していません。 – Msencenb