【问题标题】:Select all rows from three nested tables从三个嵌套表中选择所有行
【发布时间】:2012-10-23 20:56:47
【问题描述】:
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
      • 附表 3
  • 频道 2:

    • 程序 1
      • 时间表 1
      • 时间表 2
      • 附表 3

我已尝试使用此查询,但它只检索“频道”行(没有节目和时间表)

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

【问题讨论】:

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


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2019-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-29
      • 1970-01-01
      • 2012-12-07
      • 1970-01-01
      相关资源
      最近更新 更多