2013-10-11 3 views
0

Я пытаюсь создать модель для хранения информации о событиях и создать для нее список для регистрации. Каков наилучший способ связать список? Должен ли я сериализовать столбец и сделать его следующим: user1, user2, user3 или создать новую таблицу. Если я создам новую таблицу, как бы связать ее с этой моделью? Будут многочисленные события со знаками.Rails/Devise: Сохранение списка пользователей в модели

В настоящее время у меня есть это для остальной части модели:

rails generate model Event title:string description:string start:datetime end:datetime location:string numberofvolunteers:integer 

ответ

0

Это довольно стандартная задача моделирования данных и вы обычно хотите моделировать его как многие-ко-многим. Вам нужно создать промежуточную таблицу, чтобы присоединиться к событиям и пользователям. Ниже я добавил несколько полезных атрибутов, которые вы можете отслеживать - ли приглашение было принято (RSVP'd) и действительно ли они присутствовали:

rails generate model Invite user_id:integer event_id:integer accepted:boolean attended:boolean 

Итак у вас есть:

class Event 
    has_many :invites 
    has_many :users, through: :invites 
end 

и

class User 
    has_many :invites 
    has_many :events, through: :invites 
end 

и вы также можете получить фантазии с помощью фильтрации на accepted и attended создать дополнительные отношения, если вы хотите.

Решение здесь очень «Rails Way» и, вероятно, должно быть вашим наклоном по умолчанию при проектировании базы данных. Тем не менее, ваше первое предложение просто сохранить список идентификаторов пользователей также возможно, если вы не хотите когда-либо искать, какие события посетили пользователи, и вы хотите вручную проверить список уникальным (так что один и тот же пользователь не работает дважды).

+0

Ну, я в основном делаю что-то, чтобы подписаться на добровольное мероприятие, где нужно определенное количество добровольцев. Так что эта модель не работает для меня, но я получаю общую идею ее применения. Я использую другую модель, такую, что она имеет имя, адрес электронной почты, startdatetime, enddatetime. Я связал с вышеописанной моделью событий: «belongs_to: event» –

+0

@ShravMehta Это будет работать, пока пользователи могут посещать только одно событие. Это возможно, но это довольно необычное требование, особенно если вы хотите отслеживать прошлую посещаемость. – mahemoff

+0

О, как я могу применить это, чтобы пользователи могли регистрироваться для нескольких событий. –

Смежные вопросы