0

「太ったモデル/細いコントローラー」と「ビューにロジックを入れないでください」というアドバイスを認識しています。ただし、例から学ぶのに役立ちます。以下で、クエリがビューに表示されないようにコードを書き直す最良の方法は何ですか?

モデル

 class Product < ActiveRecord::Base
   belongs_to :order
 end

 class Order < ActiveRecord::Base
   has_many :products
 end

コントローラ

 @orders = Order.all

意見

 <% @orders.each do |o| %>
 <%= Product.where("order_id = ?", o.id).count %>
 <% end %>
4

1 に答える 1

3

何を表示したいかによって異なりますが、簡単なオプションは、指定した関連付けを利用することです。

<% @orders.each do |o| %>
  <%= o.products.count %>
<% end %>

次に、コントローラーで、熱心な読み込みを使用して SQL 呼び出しを最適化できます。

@orders = Order.all(:include => :products)
于 2012-06-29T14:34:00.120 に答える