Как в одной таблице сделать два внешних ключа?

Ruby on Rails
есть две таблицы:
Users:
id
name

Orders:
id
buyer
seller


В таблице с заказами (Orders) в полях buyer и seller хранится id юзера
Подскажите, как задать такую связь в моделях?
  • Вопрос задан
  • 343 просмотра
Решения вопроса 1
c3gdlk
@c3gdlk
Ментор в http://rubyboost.ru/
Примеры к ответу nbekseitov
Полиморфная связь
class Buyer < User
end

class Seller < User
end

class Order
  belongs_to :buyer
  belongs_to :seller
end


Внешний ключ
class Order
  belongs_to :buyer, foreign_key: :buyer_id, class_name: User
  belongs_to :seller, foreign_key: :seller_id, class_name: User
end


Сложно сказать какой вариант правильный, зависит от задачи и структуры проекта. Второй вариант намного проще и довольно часто его достаточно. В первом варианте Вы с самого начала будете явно разделять логику продавца и покупателя между двумя классами, что положительно скажется на качестве кода в дальнейшем.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
nbekseitov
@nbekseitov
Ruby developer
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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