【问题标题】:Ruby on Rails Join table relationshipRuby on Rails 连接表关系
【发布时间】:2009-03-05 22:58:50
【问题描述】:

我正在尝试使用我的连接表“显示”来获取电影列表

我试图使用此代码,但它不起作用。


@showing_list = Showing.find_sorted_showings("time")

@movie_list = @showing_list.movies <-- NoMethodError 

这是我的表演课


class Showing < ActiveRecord::Base
belongs_to :movie


def self.find_sorted_showings(order)
    find(:all, :order => order)
end
end

如何更改我的展示类以从showing_list 中获取move_list 而无需手动操作?

谢谢

【问题讨论】:

    标签: ruby-on-rails activerecord join


    【解决方案1】:

    @showing_list 是一个数组。

    @showing_list.collect(&:movie).uniq
    

    【讨论】:

      【解决方案2】:

      使用急切加载功能:

         def self.find_sorted_showings(order)
          find(:all, :order => order, :include => :movie)
         end
      

      生成的数据集现在将包括电影以及可通过以下方式访问的放映时间:

      @showing.each do |show_time|
        show_time.movie.title
      end
      

      当然,如果您希望创建更具可读性的列表,这会带来分组问题。但是你可以用 group_by 方法做一些漂亮的事情,比如:

      find(:all, :order => order, :include => :movie).group_by {|s| s.show_time}
      

      希望对您有所帮助。

      -克里斯

      【讨论】:

        【解决方案3】:

        试试:

        named_scope :find_sorted_showings, lambda { |order|
          { :order => order }
        }
        

        【讨论】:

          猜你喜欢
          • 2011-05-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多