Rails 3 ActiveRecord вопрос-вопрос - PullRequest
0 голосов
/ 11 марта 2011

У меня есть модель X, которая belongs_to :y и поле quantity

Модель Y:

has_many :xs
belongs_to :user
belongs_to :z

Модель User:

has_many :ys
has_many :xs, :through => :ys

Модель Z

has_many :ys
has_many :users, :through => :ys

Как узнать, сколько xs пользователь имеет для определенного z?Как я могу найти сумму полей количества для xs, которое пользователь имеет для определенного z?

Я хотел бы найти решение, которое использует синтаксис запроса активной записи в rails 3 и имеет место вуровень базы данных, насколько это возможно, пожалуйста.Буду признателен за любую помощь.

1 Ответ

0 голосов
/ 23 июня 2013

Позвольте мне попытаться перевести это по-другому.

Модель 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, чтобы найти ответы, которые вы ищете!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...