从三个嵌套表中选择所有行

时间:2012-10-23 20:56:48

标签: mysql ruby-on-rails ruby-on-rails-3 activerecord associations

class Channel < ActiveRecord::Base
  has_many :programs

end

class Program < ActiveRecord::Base
  belongs_to :channel
  has_many :program_schedules

end

class ProgramSchedule < ActiveRecord::Base
  belongs_to :program
end

我想获得这样的数据数组:

  • 第1频道:

    • 计划1

      • 附表1
    • 计划2

      • 附表1
      • 附表2
      • 附表3
  • 频道2:

    • 计划1
      • 附表1
      • 附表2
      • 附表3

我尝试过这个查询,但它只检索“频道” - 字段(没有程序和日程表)

 @data = Channel.joins(:programs => :program_schedules).group("channel_id")

1 个答案:

答案 0 :(得分:1)

我不建议你以这种方式获取所有行。

做这样的事情。

在你的控制器中,比如索引动作

def index
  @channels = Channel.all
end

在您要显示所有内容的视图中。

%ul#channels
  = @channels.each do |channel|
    %li= channel.name
    %ul.channel
      = channel.programs.each do |program|
        %li= program.name
        %ul.program
          = program.schedules.each do |schedule|
            %li= schedule.name