Ruby on rails 3 按关联表排序';s柱

Ruby on rails 3 按关联表排序';s柱,ruby-on-rails-3,postgresql,associations,Ruby On Rails 3,Postgresql,Associations,我正试图从关联表中获取特定的订单。以下是我的设置: 我有一次旅行,增加了三个位置。Triplocation表有一个列,该列使用名为location\u order的列定义位置的顺序。现在,当我用show方法收集我的单程旅行时,我想在这个专栏上下订单 我尝试了@trip=trip.find(params[:id],:order=>'triplocations.location\u order'),但出现以下错误: PG::Error: ERROR: missing FROM-clause ent

我正试图从关联表中获取特定的订单。以下是我的设置:

我有一次旅行,增加了三个位置。Triplocation表有一个列,该列使用名为location\u order的列定义位置的顺序。现在,当我用show方法收集我的单程旅行时,我想在这个专栏上下订单

我尝试了
@trip=trip.find(params[:id],:order=>'triplocations.location\u order')
,但出现以下错误:

PG::Error: ERROR:  missing FROM-clause entry for table "triplocations" LINE 1: ....* FROM "trips"  WHERE "trips"."id" = $1 ORDER BY triplocati...
你知道如何订购我的定位单吗


提前谢谢

听起来像是您希望对triplocations关联进行排序,也就是说,
@trip.trip\u位置
是按位置顺序排序的

我建议在
三重定位中添加一个默认范围

default_scope :order => 'location_order DESC'

首先,find只会给你一条记录,所以你要么想使用where,要么想查找all

第二,如果您想返回三重定位,而不是trips,那么您需要用它开始查询

试试这个:

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)

您想查找id为
参数[:id]
的行程,然后根据
三重定位
模型上的属性
位置_顺序
对其进行三重定位?对我来说,这听起来像是两个步骤:首先找到行程,然后订购三重定位关联。