У меня есть приложение, предназначенное для школ.Пользователи в системе - это родители, которые отслеживают действия своих детей (члены семьи или просто члены).Учителя также являются пользователями и могут войти в систему для участия в мероприятиях.Модель Member - это место, которое приложение использует для поиска участников.Чтобы найти учителей, они добавляются в модель Member и по той же причине добавляются и родители.
Учитель, добавленный в это приложение, будет иметь одну запись в каждой таблице user, user_member и member.Запись в пользователе, позволяющая ему войти, 1 запись в члене, чтобы он мог быть доступен для поиска, и 1 в user_member для установления связи.В этом случае поиск собственной записи пользователя является тривиальным.Но если бы я был родителем с логином и двумя детьми в системе, Джеймсом и Брайаном, можно было бы найти 3 записи в таблице «Члены», одну для Джеймса, одну для Брайана и одну для себя.Мне нужно знать, какая запись участника моя, а не Джеймса или Брайана.
Какой лучший способ смоделировать это?Я рассмотрел два варианта: 1) в пользовательской таблице есть внешний ключ, который указывает на собственный member_id пользователя. ИЛИ 2) таблица user_members имеет логическое значение «own_member», которое указывает, что member_id этого user_id является записью участника для пользователя.Есть ли один, который будет предпочтительнее?Еще один рельс как?И как бы я сделал вызов построить / создать ассоциации?
Текущие отношения моделируются так:
class User < ActiveRecord::Base
has_many :user_members
has_many :members, :through => :user_members
end
class UserMember < ActiveRecord::Base
belongs_to :user
belongs_to :member
end
class Member < ActiveRecord::Base
has_many :user_members
has_many :user, :through => :user_members
end