0

次のようなjsonを使用して、コントローラーの作成アクションにPOSTリクエストを実行しています。

{
  "token":"amsdaashdaksjdh" #assume this is a valid token for a user
  "post": {
     "content":"some random text"
     "title":"random title"
   }
}

ただし、次のようなトークンに基づいてユーザーがデータベースに存在するかどうかを確認する before_filter チェックがあります。

before_filter :authenticate


def authenticate
  @user = User.find_by_authentication_token(params[:token])
  if (@user == nil)
    render :json => {error: "invalid token"}
  end
end

常に無効なトークンエラーが表示されます...

4

1 に答える 1

0

before_filterフィルタがnilまたはを返すと、 Railsは処理チェーンを停止しますfalse。あなたのステートメントは実行された最後の操作であるため、そうでない場合if、フィルターは を返し、これにより処理が停止します。nil@usernil

elseユーザーが見つかったときに true を返すブロックを追加できます。

def authenticate
  @user = User.find_by_authentication_token(params[:token])
  if @user.nil?
    render :json => {error: "invalid token"}
    false
  else
    true
  end
end
于 2012-07-29T21:42:30.567 に答える