0

假设我有一个项目模型,其中包含许多成员和许多任务。

class Project < ActiveRecord::Base
  has_many :memberships
  has_many :members, :through => :memberships, :class_name => 'User'
  has_many :tasks
end

在项目中创建任务时,我们会记录哪个用户创建了它。只有属于当前项目成员的用户才能

class Task < ActiveRecord::Base
  belongs_to :creator, :class_name => 'User'
  belongs_to :project
end

在我的projects#show操作中,我想找到一个项目并将其与它的成员、任务及其创建者一起显示。我尝试急切地加载这些东西以加快查询速度。

由于我急于加载搜索成员,并且任务只能有一个创建者是成员,我是否认为我不必专门包括任务的创建者?

换句话说,我可以这样做:

Search.includes(:members, :tasks)

或者我应该这样做:

Search.includes(:members, :tasks => :creator)
4

1 回答 1

1

我认为您需要明确包含 :creator 否则它会在您访问创建者时查询它,因为 rails 无法知道创建者是已经查询的成员之一

于 2012-05-23T17:37:52.540 回答