0
我正在構建一個簡單的ToDo應用程序,其中我有項目,誰有許多任務,誰有許多子任務。用戶可以分配給項目,任務和子任務。範圍從數組只有那些對象在其中一個用戶是當前用戶
在我的應用程序的一部分(在項目展示頁面),我希望顯示任務&過期的子任務。我用下面的代碼挑選它們:
35 @project_tasks = @project.tasks
36 @project_subtasks = @project.subtasks
37
38 # OVERDUE
39 @overdue_tasks = @project_tasks.overdue
40 @overdue_subtasks = @project_subtasks.overdue
41 @overdue_tasks_and_subtasks = @overdue_tasks + @overdue_subtasks
42 @overdue_tasks_and_subtasks_sorted = @overdue_tasks_and_subtasks.sort_by {|object| object.target }
這顯示了某些項目上所有用戶的過期任務和子任務。但是,我希望在用戶點擊按鈕時有選項,他只看到他分配給的任務和子任務。因此,下列範圍將適用於第43行:
@overdue_tasks_and_subtasks_from_current_user_sorted = @overdue_tasks_and_subtasks_sorted.where(#one of the users is the current_user)
如何編寫該範圍?
如果我能我給你1000分:)謝謝你,工作就像一個魅力。我正在使用MySQL和rails 3.你能幫助我用這些信息進行更有效的查詢嗎? – oFca 2012-07-18 22:08:23
@oFca研究Rails 3的ActiveRelation是如何工作的。通常,使用'.joins'和'.where'進行數據庫中的過濾會更快,而不是實際上將這些對象加載到內存中並使用'.select'。另外,通過智能使用急切加載(通過'.includes'方法),您通常可以獲得很多性能。本指南可能是一個很好的開始:http://guides.rubyonrails.org/active_record_querying.html – MrTheWalrus 2012-07-18 22:36:56
是的,閱讀指南之前,但無法弄清楚...如果你有時間,我會非常非常感謝,如果你在代碼中寫下你的想法,這將對我有很大的幫助。 – oFca 2012-07-18 22:45:47