0

関連するテーブルから特定の注文を取得しようとしています。これが私のセットアップです:

トリップロケーションが追加されたトリップがあります。Triplocation テーブルには、location_order という名前の列で場所の順序を定義する列があります。show メソッドで 1 回の旅行を収集するときに、この列で注文したいと思います。

試してみまし@trip = Trip.find(params[:id], :order=> 'triplocations.location_order')たが、次のエラーが発生しました。

PG::Error: ERROR:  missing FROM-clause entry for table "triplocations" LINE 1: ....* FROM "trips"  WHERE "trips"."id" = $1 ORDER BY triplocati...

location_order を注文する方法はありますか?

前もって感謝します!

4

2 に答える 2

1

triplocations の関連付けを順序付けたい、つまり@trip.trip_locations場所の順序で並べたいようです。

デフォルトのスコープを に追加することをお勧めしますTripLocation:

default_scope :order => 'location_order DESC'
于 2012-12-12T16:23:26.960 に答える
0

まず、find は 1 つのレコードしか提供しないため、where を使用するか、すべてを検索する必要があります。

次に、トリップではなく TripLocations を返したい場合は、それでクエリを開始する必要があります。

これを試して:

TripLocations.where(:trip_id => params[:id]).order(:location_order)

あなたが持っている旅行の場所を注文したい場合は、モデルの関連付けを通じてそれを行うこともできます

# load the trip
@trip = Trip.find(params[:id])

# order the locations
@locations = @trip.triplocations.order(:location_order)
于 2012-12-12T16:28:28.380 に答える