-2

チャプターとhas_manyの関係があるストーリーがありますチャプターhas_manyとページの関係があります

Stories.pagesメソッドを使用してStoriesオブジェクトのページのリストを返したい

def pages
  self.chapters.map do |c| c.pages end
end

これは、これを行うことに頼ったリストのリストを返していません

def pages
  pages =[]
  self.chapters.each do |c|
    c.pages.each do |p|
      pages << p
    end
  end
end

私はルビーに不慣れで、phpとc#のバックグラウンドを持っています。ストーリーとページを直接関連付けたり、カスタムクエリ(INNER JOIN)を作成したりすることでこれを実行できることを知っています。

しかし、私の頭をマップに巻き付けて、メソッドを少し減らしたいと思います。

4

1 に答える 1

0

独自のカスタムメソッドを作成する必要はありません。Railsはすでにこれをhas_many :through関連付けとして提供しています。

class Story < ActiveRecord::Base
  has_many :chapters
  has_many :pages, :through => :chapters
end
于 2012-10-20T02:33:39.837 に答える