.. :)私が欲しいものコンプレックス団体あなたが見てみることができれば、この1に引っかかっ
は、特定のユーザーのすべての未完了のタスクを含むすべての未完成のプロジェクトを、得ることです。
これは私のセットアップは、これまでのところです:この設定は、プロジェクトのために働く
- for project in current_user.employee.unfinished_projects
= project.name
# THESE ARE NOT THE ONLY THE TASKS FOR THE CURRENT_USER
- for task in project.tasks (OR project.unfinished_tasks ?)
= task.name
が、あります。私の見解(HAML)で
User (devise)
has_one :employee
Employee
belongs_to :user
has_and_belongs_to_many :tasks
has_and_belongs_to_many :unfinished_tasks, :conditions => { :tasks => { :completed_at => nil } }, :class_name => "Task"
has_many :unfinished_projects, :through => :unfinished_tasks, :source => :project, :uniq => true (:include => :unfinished_tasks OR :include => :tasks ?)
Project
has_many :tasks
Task
belongs_to :project
has_and_belongs_to_many :employees
私はこのような何かをしたいのですが未完成のタスクを持つプロジェクトのみ。
しかし、私はどのようにこれらのプロジェクトで未完成のタスクを含めるかわかりません。
誰もがこれを実行するための最善の方法を知っています。可能であれば、私はこのすべてのための単一のクエリを持っていたいと思います。
編集: 難しい部分は、タスクがcurrent_user用でなければならないということです。 プロジェクトは完全に読み込まれます。
しかし、それはタスクロードするとき:
- for task in project.tasks.unfinished
をそれはこのない:それは何をすべき
Task Load (1.3ms) SELECT `tasks`.* FROM `tasks` WHERE `tasks`.`project_id` IN (12, 7, 13, 15, 14, 10, 16, 17, 9, 2, 3)
Task Load (0.4ms) SELECT `tasks`.* FROM `tasks` WHERE `tasks`.`project_id` = 12 AND `tasks`.`completed_at` IS NULL
Task Load (0.3ms) SELECT `tasks`.* FROM `tasks` WHERE `tasks`.`project_id` = 7 AND `tasks`.`completed_at` IS NULL
Task Load (0.6ms) SELECT `tasks`.* FROM `tasks` WHERE `tasks`.`project_id` = 13 AND `tasks`.`completed_at` IS NULL
etc.
は、従業員の作業を取得することです:
べきEmployee
Projects
Tasks
プロジェクトクエリーで結合されたインナーであったタスクです。
あなたが求めていることは、明確ではありません。あなたは未完成のタスクを持っているプロジェクトのリストを "unfinished_projects"にしたいのですか?まだ完了していない(完了していない)プロジェクトに属しているタスクを意味するために「incomplete_tasks」を使用することを意味しますか? –
未完成のプロジェクトは未完成のタスクが多いプロジェクトです。私は、特定の従業員からの未完成の課題を持つ未完成のプロジェクトをすべて欲しい。理想的には、これらのすべてのレコードが単一のクエリウィッチに含まれます。 –
大きな問題は、プロジェクトを取得してプロジェクトのタスクをループした後で、もはやその特定の従業員に関連していないことです。 –