0

私はもともとacts_as_treeについてこの質問をしましたが、より一般的であるように思われるので、ここで少し言い換えています。act_as_tree を使用したモデル「カテゴリ」があります。さまざまなクエリのために他のモデルと結合する必要があることがよくありますが、子、祖先、兄弟、子孫などの提供されたスコープを使用して必要な条件を作成する方法がわかりません。

具体例:

class Category < ActiveRecord::Base
  acts_as_tree
  has_many :photo
end

class Photo
  belongs_to :category
end

cat = Category.first

cat の子供のすべての写真またはその兄弟のすべての写真を照会するにはどうすればよいですか? 次のようなものが必要なようです:

Photo.joins(cat.children)
Photo.joins(cat.siblings)

私が知っているのは有効なコードではありません。

4

1 に答える 1

0

act_as_tree は実際にはスコープを使用するのではなく、結果を返すメソッドを使用するため、次のようにすることができます。

class Photo
  belongs_to :category

  scope :from_category, -> (category) {
      joins(:category).where(category: category)
  }
end

cat = Category.first

Photo.from_category(cat.children)
Photo.from_category(cat.siblings)

そして、それはうまくいくはずです。

于 2014-05-29T03:12:34.740 に答える