私は深い関連付けをアプリケーションに取り入れています。ストーリーは計画レベルに属し、計画レベルは1つまたは複数のプログラムに属します。私はプログラムを表示したいプログラムのショーページ内has_many、:を関連レコードに表示
class Program < ActiveRecord::Base
has_and_belongs_to_many :planning_levels
has_many :stories, :through => :planning_levels
end
class PlanningLevelsPrograms < ActiveRecord::Base
end
class PlanningLevel < ActiveRecord::Base
has_and_belongs_to_many :programs
has_many :stories
end
class Story < ActiveRecord::Base
belongs_to :planning_level
end
、各計画レベルと集計ストーリーは、各計画レベルのためにカウントされます。
プログラムの表示ページからStoryモデルにアクセスする方法がわかりません。
以下は、プログラムに属する各計画レベルを表示するのに最適です。
<% @program.planning_levels.each do |p| %>
<p><%= p.name %></p>
<% end %>
...しかし、表示された各計画レベルで次の作業を行う方法はわかりません。プログラムからStoryモデルにアクセスするにはどうすればよいですか?プログラムコントローラに必要なものがありますか?前もって感謝します!
@program.planning_level.stories.count(:id)
'@program.planning_levels.each {| p | p.stories.count} 'はそれを行うべきです。これは 'has_many'関係であり、' planning_levels'によって返された 'ActiveRecord :: Relation'は' stories'については知りませんが、関係内に含まれる各インスタンスは知っているため、 '@ program'は' planning_level'に応答しません。これは 'n + 1'の心配を引き起こす可能性があるので、' @ program'を設定するときにこのデータをプリロードしたいかもしれないことに注意してください – engineersmnky