Как сделать отношение, которое имеет has_many и own_to - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть User, который может сделать Event. Это организаторы.

Другие User s могут перейти к этим Event s в качестве участников.

Как мне сделать следующее отношение?

Пользователь:

has_many :events, foreign_key: organizer_id
belongs_to :event

Событие:

belongs_to :user #how to do the organizer and attendees distinction?

Ответы [ 2 ]

1 голос
/ 26 апреля 2019

Я рекомендую создать таблицу event_attends и поместить туда столбцы user_id и event_id и user_id и event_attend_id в events таблицу. Тогда вы могли бы создать ассоциации как это:

class User < ActiveRecord::Base
  has_many :event_attends
  has_many :events
end

class Event < ActiveRecord::Base
  belongs_to :user
  has_many :event_attends
end

class EventAttend < ActiveRecord::Base
  belongs_to :user
  belongs_to :event
end
0 голосов
/ 26 апреля 2019

Вам нужны два разных отношения для каждой модели с разными именами, но одного и того же класса.Кроме того, у вас есть отношение многие ко многим между посетителями и событиями.

Пользователь

has_many :organized_events, class_name: "Event"
has_and_belongs_to_many :attended_events, class_name: "Event"

Событие:

belongs_to :organizer, class_name: "User"
has_and_belongs_to_many :attendees, class_name: "User"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...