Позвольте мне попытаться перевести это по-другому.
Модель X становится Корзиной
class CartItem
belongs_to :cart
attr_accessor :quantity
end
Модель Y становится Телегой
class Cart
has_many :cart_items
belongs_to :user
belongs_to :section
end
Модель User остается прежней
class User
has_many :carts
has_many :cart_items, :through => :carts
end
Модель Z становится Разделом
class Section
has_many :carts
has_many :users, :through => :carts
end
Поэтому вы спросили:
- Как узнать, сколькоэлементы корзины, которые есть у пользователя для определенного раздела?
- Как найти сумму полей количества для элементов корзины, которые есть у пользователя для определенного раздела?
Добавить следующееобласть видимости CartItem
scope :for_section, lambda { |section|
includes(:cart).where('carts.section_id = ?', section.id)
}
И ответы будут
- user.cart_items.for_section (section) .count
- user.cart_items.for_section (section).sum ('количество')
Эти команды сгенерируют точный запрос SQL, чтобы найти ответы, которые вы ищете!