1

我正在创建一个 Rails 3.2 网络应用程序。在这个应用程序中,我有四张桌子。项目、任务、文章和项目。

我想要做的是在一次调用中汇总所有任务值(文章中的价格)。

这是我尝试过的并且有效,但这是最好的方法吗?

@project.tasks.where("status = ?", "completed").joins(:articles).sum(:price)

任务表

class Task < ActiveRecord::Base

 has_many :articles
 has_many :items, :through => :articles

end

文章连接表

class Article < ActiveRecord::Base

 belongs_to :task
 belongs_to :item

 attr_accessible :account_id, :amount, :price, :item_id, :task_id

end

项目表

class Item < ActiveRecord::Base

 has_many :articles
 has_many :tasks, :through => :articles

end
4

1 回答 1

5

总而言之,您这样做的方式看起来不错,但您也可以美化您的代码:

项目.rb

has_many :completed_tasks, class: 'Task', :conditions => {:status => 'completed'}

控制器

@project.completed_tasks.joins(:articles).sum(:price)
于 2013-08-08T10:34:04.360 回答