Задать вопрос

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

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

Orders:
id
buyer
seller


В таблице с заказами (Orders) в полях buyer и seller хранится id юзера
Подскажите, как задать такую связь в моделях?
  • Вопрос задан
  • 344 просмотра
Подписаться 1 Оценить 1 комментарий
Помогут разобраться в теме Все курсы
  • Code Basics
    Ruby для начинающих
    1 месяц
    Далее
  • Хекслет
    Разработчик на Ruby on Rails
    5 месяцев
    Далее
  • Skillbox
    Ruby on Rails с нуля
    10 месяцев
    Далее
Решения вопроса 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
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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