Ruby on rails 3 按关联表排序';s柱
我正试图从关联表中获取特定的订单。以下是我的设置: 我有一次旅行,增加了三个位置。Triplocation表有一个列,该列使用名为location\u order的列定义位置的顺序。现在,当我用show方法收集我的单程旅行时,我想在这个专栏上下订单 我尝试了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
@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]
的行程,然后根据三重定位
模型上的属性位置_顺序
对其进行三重定位?对我来说,这听起来像是两个步骤:首先找到行程,然后订购三重定位关联。