2017-08-17 18 views
-1

関連するテーブルの "name"属性でクエリを並べ替えるときに、次のエラーが発生します。PG :: UndefinedTable:ERROR:テーブル "チーム"のFROM句のエントリがありません

エラー

PG::UndefinedTable: ERROR: missing FROM-clause entry for table "team" 

順序やorderiを削除するクエリ

: SELECT "team_seasons"."id" AS t0_r0, "team_seasons"."season_id" AS t0_r1, "team_seasons"."team_id" AS t0_r2, "team_seasons"."created_at" AS t0_r3, "team_seasons"."updated_at" AS t0_r4, "team_seasons"."points" AS t0_r5, "team_seasons"."goals_for" AS t0_r6, "team_seasons"."goals_against" AS t0_r7, "team_seasons"."games_played" AS t0_r8, "teams"."id" AS t1_r0, "teams"."name" AS t1_r1, "teams"."city" AS t1_r2, "teams"."created_at" AS t1_r3, "teams"."updated_at" AS t1_r4 FROM "team_seasons" LEFT OUTER JOIN "teams" ON "teams"."id" = "team_seasons"."team_id" WHERE "team_seasons"."season_id" = 1 ORDER BY team.name 

SeasonsController.rb

class SeasonsController < ApplicationController 
load_and_authorize_resource 

def show 
    @season = Season.find(params[:id]) 
    @teamseasons = TeamSeason.where(season: @season).includes(:team).order("team.name") 
end 

チームシーズレコードの属性によるエラーは発生しないので、関連するレコードの順序付けに関連するものであることがわかります。私はそれが私がする必要があったことを含むと思ったが、明らかにそれは動作していない。どんな助けも大歓迎です。

+0

使用してみてください: '.INCLUDES(:チーム).references(:チーム).ORDER(チーム:名前を)'。 Rails 4+では、プライマリSQLクエリ( 'order'、' where'や 'select'のような)でインクルードされたリレーションを使いたい場合、参照する必要がありますので、LEFT JOINと2つの別々のSQLクエリを実行しません。 – MrYoshiji

答えて

0

(心)にteams.nameteam.nameを変更してみてください

TeamSeason.where(season: @season).includes(:team).order("team.name")

+0

あなたは 'teams'と' team'という2つのテーブルを持っていますか? –

+1

理想的にはテーブル名は複数で終わるべきです –

+0

これはうまくいきました。ありがとう!補足として、私は 'チーム'と 'チーム'テーブルという名前のテーブルが1つしかありません。 – dannymorty

関連する問題