0

我正在尝试从关联表中获取特定订单。这是我的设置:

我有一次旅行,其中添加了旅行地点。Triplocation 表有一列定义了位置的顺序,其中有一列名为 location_order。现在,当我在 show 方法中收集我的单程旅行时,我想在此列上订购。

我已经尝试过@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 只会给你一个记录,所以你要么想用 where 要么 find all。

其次,如果您想返回 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 回答