Rails 3.1 - Область применения для нескольких объектов через ассоциацию own_to? - PullRequest
0 голосов
/ 03 января 2012
class Item < ActiveRecord::Base
  belongs_to :account
  belongs_to :category
end

class Category < ActiveRecord::Base
  belongs_to :account
  has_many :items
end

Я хотел бы сделать следующее:

@items = @account.items.where(...)
@categories = @items.categories.order(...)

@items.categories должен получить все категории @items через ассоциацию belongs_to.Лучшее, что я придумала, это:

@categories = @items.map{|item| item.category }

Но разве нет возможности управлять этим?

1 Ответ

0 голосов
/ 03 января 2012

Поскольку вы хотите, чтобы категории из учетной записи проходили через пункты, я думаю, вы могли бы сделать что-то вроде

has_many :categories, :through => :items

в вашей Account модели, а затем просто позвонитьaccount.categories

Также, для записи, map, который вы там делаете, выполняет n + 1 запросов (это должно быть что-то вроде @categories = @items.includes(:category).map{...}

...