Проблемы с 2 отношениями между 2 таблицами в одном столбце в Ruby on Rails - PullRequest
0 голосов
/ 08 марта 2011

У меня есть сомнения, я создаю платформу для друга на сайте Ruby on Rails; У меня есть таблица с именем users и таблица с именем friends , которая управляет дружбой между пользователями. В друзей у меня есть 2 поля, * user_id1 * и * user_id2 *. Это отношения, которые я установил в моделях:

class User < ActiveRecord::Base
    has_many :friends
end
class Friend < ActiveRecord::Base
    belongs_to :user, :foreign_key => "user_id1"
    belongs_to :user, :foreign_key => "user_id2"
end

Это хороший способ справиться с этой ситуацией? Другая идея - создать другую модель, которая указывает на ту же таблицу в базе данных, userAux , и использовать ее для отношений. Как вы думаете, что лучше? У тебя есть идея получше?

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 08 марта 2011

Самостоятельная структура «многие ко многим» часто называется спецификацией.Это очень хорошая идея, и она довольно часто используется в реляционных базах данных.Вот модель данных .У вас могут быть логические атрибуты, такие как IsAccepted и IsRejected.

. Пожалуйста, не называйте столбцы как user_id1, 2.Пожалуйста, назовите их чем-то действительно значимым, например host_id и guest_id или requester_id и friend_id.Актуальность этого станет ясна только при кодировании.

Читатели, не знакомые со стандартом реляционного моделирования, могут найти нотацию IDEFIX полезной.

1 голос
/ 08 марта 2011

Здесь на самом деле очень похожая ситуация: http://oldwiki.rubyonrails.org/rails/pages/HowToCreateASelfReferentialManyToManyRelationship

...