在块中排序已从连接模型中拉出的项目

时间:2013-05-23 15:04:24

标签: ruby-on-rails

下面是块。 GroupWorkout是与has_many :through关系相关联的模型,其间为GroupsWorkout联接模型。

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

我想在workout.name表格中的workout_order列中订购WorkoutsGroup

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

2 个答案:

答案 0 :(得分: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"

答案 1 :(得分:1)

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

has_many : workouts, :through => :group_workouts, :order => 'workouts.name'