Rails:使用第二代孩子订购元素

时间:2012-08-18 09:36:13

标签: ruby-on-rails associations sql-order-by

使用我之前提问的解决方案:Rails: Create a new entry in a model that belongs_to two other models,我想显示商店收集的所有意见。

总结一下,我有一个拥有很多意见的产品的商店(请参阅上一个链接以获得有关模型代码的更多详细信息)

为了获得商店收集的所有意见,我在OpinionsController中使用以下代码:

# Show a specific store opinions.
def show
    @store = Store.find_by_id params[:store_id]
end

然后,在show.html.haml视图中,我使用此代码显示意见:

%table
    - @store.opinions.each do |opinion|
        %tr
            %td= opinion.id
            %td= opinion.content
            %td= opinion.product.name
            %td= opinion.created_at

无论母产品是什么,我都可以通过opinion.created_at订购意见?

更一般地说,如何使用第二代子关联中的参数进行排序?

提前致谢。

1 个答案:

答案 0 :(得分:1)

如果Opinion有store_id,我不明白为什么你必须使用第二代子协会。

难道你不能这样做吗?:

# Show a specific store opinions.
def show
  @opinions = Opinion.order(:created_at).find_all_by_store_id params[:store_id]
end

然后在你看来:

%table
  - @opinions.each do |opinion|
    %tr
      %td= opinion.id
      %td= opinion.content
      %td= opinion.product.name
      %td= opinion.created_at

或者,只有控制器中定义了@store(就像你拥有的那样),你可以在视图中执行此操作:

%table
  - @store.opinions.scoped.order(:created_at).each do |opinion|
    %tr
      %td= opinion.id
      %td= opinion.content
      %td= opinion.product.name
      %td= opinion.created_at