私の Rails 3.1 アプリケーションには、次のモデルがあります。
class Project < ActiveRecord::Base
has_many :tasks
has_many :hours, :through => :tasks
def sum_hours
self.hours.sum(:hours)
end
end
class Task < ActiveRecord::Base
belongs_to :project
has_many :hours
def sum_hours
self.hours.sum(:hours)
end
end
class Hour < ActiveRecord::Base
attr_accessible :hours # column in table
belongs_to :task
end
projects_controller.rb でこれ:
def show
@project = Project.find(params[:id])
@tasks = @project.tasks.includes(:hours)
end
そしてprojects/show.html.erbで私はこれを使用します:
...
<td>Sum hours: <%= @project.sum_hours %></td>
...
<% for task in @tasks do %>
<tr>
<td><%= task.sum_hours %></td>
</tr>
...
ただし、.includes(:hours)を使用しても、プロジェクトとすべてのタスクに対して個別にクエリを使用します。私は何かが欠けていますか?? 私はどこで間違いをしていますか?