1

下面是块。Group并且Workout是通过has_many :through关系连接的GroupsWorkout模型和介于两者之间的连接模型。

<% @group.workouts.each do |workout| %>
    <%= link_to workout.name, workout %><br />
<% end %>

我想按表中workout.nameworkout_order列排序WorkoutsGroup

通常我只会使用Model.order(column_name, DESC),但据我所知,这在这里行不通。

4

2 回答 2

1

您可以在Group模型中添加订单:

has_many : workouts, :through => :group_workouts, :order => 'workouts.name'
于 2013-05-23T15:09:07.387 回答
1

如果您想在显示之前对页面中的项目进行排序,那么您可以在迭代之前对锻炼集合进行排序,如下所示:

<% @group.workouts.sort_by{|workout| workout.workout_order}.each do |workout| %>
  <%= link_to workout.name, workout %><br />
<% end %>

编辑:啊,我想我误解了你的问题。给我一点时间来完善答案。

您可以通过在关联中定义顺序来按连接表中的列对锻炼进行排序,如下所示:

团体型号:

has_many :workouts, :through => :group_workouts, :order => "workoutorder DESC"
于 2013-05-23T15:06:16.513 回答