Rails 4活动记录查询

时间:2018-01-20 20:14:28

标签: ruby-on-rails ruby-on-rails-4 rails-activerecord

我有2个模型,Project和TodoItem。请参阅下面的表结构和模型。

我要做的是查询所有 todo_items ,其中 ssigned = current_user.fullname completed_at为零 groups_by 项目名称和Ordered_by 项目名称

然后我想循环出类似的东西:

PROJECT 1名称

        
  • ToDo_Item 1内容
  •     
  • ToDo_Item 2内容
  •     
  • ToDo_Item 3内容

PROJECT 2名称

        
  • ToDo_Item 1内容
  •     
  • ToDo_Item 2内容
  •     
  • ToDo_Item 3内容

表格结构:

create_table "projects", force: :cascade do |t|
    t.string   "name"
    t.text     "details"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end
create_table "todo_items", force: :cascade do |t|
    t.string   "content"
    t.string   "assigned"
    t.integer  "project_id"
    t.datetime "created_at",   null: false
    t.datetime "updated_at",   null: false
    t.datetime "completed_at"
  end

型号:

class Project < ActiveRecord::Base
  has_many :todo_items, :dependent => :destroy
  validates_presence_of :name
end

class TodoItem < ActiveRecord::Base
  belongs_to :project 
end

提前谢谢。

2 个答案:

答案 0 :(得分:1)

完整的解决方案

你可以试试这个

@projects = Project.includes(:todo_items).where(todo_items: {assigned: current_user.fullname, completed_at: nil }).group("projects.name").order("projects.name")

答案 1 :(得分:0)

你几乎就在那里。

您只需添加.where

@projects = Project.includes(:todo_items).where(completed_at: nil)