@modernstyle
Code GOD

Правильная ассоциация между Заказом, Товаром и Пользователем в Rails?

Друзья, есть вопрос. У меня есть пользователи, каждый может сделать много заказов, в каждом из которых будет находиться один товар. На данный момент я сделал так:

class Order
  belongs_to :user
  belongs_to :product
end

class Product
  belongs_to :category
  has_many :orders
end

class User
  has_many :orders
end


Однако меня не отпускает мысль, что можно пойти этим путем:

class User
   has_many :orders
   has_many :products, through: :orders
end

class Order
  belongs_to :user
  belongs_to :product
end

class Product
  belongs_to :category
  has_many :orders
  has_many :users, through: :orders
end


Стоит ли? В чем преимущество второго подхода? Какой подход более верный?
  • Вопрос задан
  • 2580 просмотров
Решения вопроса 1
Helsus
@Helsus
Так тоже самое же написано, только с добавкой.
А преимущество в том, что AR в один запрос сможет получить всех пользователей, купивших, например, определённый товар.
Ну, только нейминг чуть поменять, чтобы, кмк, понятней было:
class User
  has_many :orders
  has_many :purchased_products, through: :orders, source: :product
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы