我正在試驗範圍擴展,並想知道我是否可以做這樣的事情。紅寶石在軌道3範圍擴展和包括
class User
has_many :tasks
belongs_to :klass
scope :users_in_klass, lambda {|k| where(:klass_id => k)} do
def current_task_report
includes(:tasks)
users = []
each {|u|
user = {
:name => u.full_name,
:id => u.id,
:tasks => u.tasks
}
users << user
}
users
end
end
,並調用它像這樣
u = User.users_in_klass(6899)
u.current_task_report
我遇到的問題是,它忽略了包括上預先加載的任務。
User Load (0.5ms) SELECT `users`.* FROM `users` WHERE (`users`.`klass_id` = 6899)
Task Load (0.4ms) SELECT `tasks`.* FROM `tasks` WHERE (`tasks`.user_id = 46539)
Task Load (0.2ms) SELECT `tasks`.* FROM `tasks` WHERE (`tasks`.user_id = 46909)
Task Load (0.2ms) SELECT `tasks`.* FROM `tasks` WHERE (`tasks`.user_id = 46910)
是我在做什麼正確的?
在附註中,是否有更好的地方放置current_task_report方法?
乾杯,
添
最後檢查了這一點,它的工作原理。謝謝你的幫助。 – Tim 2012-06-12 23:27:04