1

对不起我的初学者问题,但我正在尝试学习 RoR。在 Rails 3.2 中,我声明:

class Project < ActiveRecord::Base
   attr_accessible :name, :description
   has_many :subprojects
end


class SubProject < ActiveRecord::Base
   attr_accessible :id_name, :description, :num_alloc, :project_id
   belongs_to :projects
end

如何在视图中显示具有属性 id_name、num_alloc(来自 SubProject)和 name(来自 Project)的表

我怎样才能加入?在控制器中,如果我做:

@results=  SubProject.joins('LEFT OUTER JOIN.......)

这个,只返回 SubProject 属性对吗?

谢谢

4

1 回答 1

2

有一种东西叫做急切加载。当您使用连接进行查询并创建对象时,会预先填充这些关联。例如:

@results = SubProject.joins(:project)

在您的视图或任何其他地方,如果您在子项目中调用项目对象,您将可以直接访问其内容,而无需进行其他查询。

@results.each do |r|
  puts r.project.name # The project is prepopulated from the db
end

如果您不关心性能,您可以只检查子项目并为每个子项目查询里面的项目。

@results = SubProject.all

@results.each do |r|
  puts r.project.name # This will make other query
end
于 2013-01-14T16:35:45.133 回答