1

私はdeviseを使用していて、追加のフィールドを更新しようとしています. ここに私が持っているコード

class MysessionsController < Devise::SessionsController
  def create
    self.resource = warden.authenticate!(auth_options)
    set_flash_message(:notice, :signed_in) if is_navigational_format?
    sign_in(resource_name, resource)
    self.resource.longitude = params[:longitude]
    self.resource.update_attributes(params[:longitude])
    respond_with resource, :location => after_sign_in_path_for(resource)

  end
end

restfullに従わず、機能しないことはわかっていますが、ユーザーフィールドを更新できるようにする必要があり、どうすればよいかわかりません。これで問題はありませんが、適切に変更されません. 助けてくれてありがとう

4

1 に答える 1

0

あなたの行:

self.resource.update_attributes(params[:longitude])

レコードが無効で、警告なしで失敗した場合、false を返すことがあります。まずそれをチェックしてください。

次に、継承したコントローラーの create アクションの内容をコピーする代わりに、alias_method_chain を調べたいと思うかもしれません。

それ以外の場合、これはユーザーがログインした後にレコードを更新することです。ユーザーがサインインした後に経度を保存する必要があります。ユーザーがサインインした後にユーザーをリダイレクトする場合は常に、次の呼び出しで経度の更新を処理します。生き残る必要がある場合、簡単な方法は経度をセッションに保存することです。

于 2013-02-02T05:21:35.870 に答える