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 (プロジェクトから) を持つテーブルをビューに表示するにはどうすればよいですか?

どうすれば参加できますか? コントローラーで、私が作ると:

@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 に答える