我有两个模型:项目和待办事项。在项目索引中,我想显示项目的概述,包括项目名称和项目中状态为“do”、“doing”或“done”的待办事项的数量。(例如:做:12 | 做:2 | 做:25)。在我的项目控制器中,我可以检索所有项目,但我还需要找出每个项目涉及多少具有每种状态的待办事项。我通过在项目索引视图中定义额外的数据库查询来解决这个问题:
Todo.where("project_id = ?", project.id).where("status = ?", "done").count)
这似乎不是解决此问题的正确(MVC)方法。有什么更好的方法?如何对结果集合的子集执行附加查询。
我试图在下面包含所有相关代码:
class Project < ActiveRecord::Base
has_many :todos, dependent: :destroy
end
class Todo < ActiveRecord::Base
acts_as_list
belongs_to :project
end
模型的架构是:
create_table "projects", force: true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "todos", force: true do |t|
t.string "name"
t.string "description"
t.string "status"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "position"
t.integer "project_id"
end
项目控制器:
class ProjectsController < ApplicationController
before_action :set_project, only: [:show, :edit, :update, :destroy]
def index
@projects = Project.all
end