2017-05-11 4 views
0

私はこれらの2つのテーブルを持っています - ユーザー、アカウント。 ユーザーには認証キーが含まれています。 アカウントにはアカウントの一覧が含まれています。Rails APIで正しいフィールドを返すには?

私は、認証キーが正しいかどうか、ユーザーのアカウントのリストを取得しようとしています。

だから私は持っているコントローラに -

def show 
    @user = User.where(authentication_token: params[:authentication_token]) 
    render json: @user.as_json(
      only: [:email, :id, :authentication_token] 
     ), 
     status: :created 
end 

これは単にユーザの詳細を返します。ユーザーがそのAuthentication_tokenに存在するかどうかを最初に確認してから、アカウントテーブルのUserIDを使用してアカウントの一覧を取得するように編集するにはどうすればよいですか?

+0

'@のuser.accounts'またはそのような何か:...

あなたは、例えば、このような何かを行うことができます。 –

答えて

0

authentication_tokenでない場合の希望の動作は、ですか?例外を提起しますか?どこかにリダイレクトしますか?フラッシュメッセージを表示しますか?

def show 
    if authenticated_user 
    render json: authenticated_user.accounts.as_json(
      only: [:id, :foo, :bar] 
      ), 
      status: :ok 
    else 
    render json: { errors: { authentication_token: 'Invalid' } }, 
      status: :unauthorized 
    end 
end 

private 

def authenticated_user 
    @authenticated_user ||= User.find_by(
    authentication_token: params[:authentication_token] 
) 
end 
+0

これを実行している間、私は未定義のメソッド 'accounts 'を得続けます。 accountsテーブルが存在し、authenticated_userも正しいです。 – user2775042

+0

ユーザーは 'have_many'アカウントを持っていますか?それは私が作った前提ですが、元の投稿ではこれを明確にしていません。 –

関連する問題