Как вы моделируете анонимного пользователя в существующей схеме Rails? - PullRequest
1 голос
/ 11 декабря 2011

Я работаю над своим первым простым приложением на Rails, в котором пользователи отправляют спортивные «твиты» (например, «теннис, сквош»), и сервер сопоставляет их с партнерами. Сервер вернет вам список SportMatches, основанный на похожих твитах, и у вас есть разные варианты (например, электронная почта, SMS), чтобы ответить на чей-то твит и принять его в качестве партнера. Изначально моделирование было простым, поскольку: пользователь has_many SportTweets и SportTweet принадлежат пользователю. Уведомления были просто частью Пользователя, или они могли быть смоделированы как отношение «один к одному» с Пользователем.

Мои бизнес-требования немного изменились, так как теперь у меня есть анонимные пользователи, которые также могут публиковать SportTweets. Поскольку у них нет учетной записи / профиля, они также должны отправлять уведомления (например, электронную почту, SMS) с сообщением. Я не знаю, как смоделировать этот путь Rails. SportTweets теперь либо анонимные, либо опубликованные аутентифицированными пользователями (AUP). Итак, теперь моя таблица SportTweets будет иметь следующие столбцы:

  • тип: «анонимный» или «AUP»
  • user_id: только для AUP
  • notifications_id: только для анонимных
  • спорт: для всех
  • post_date: для всех
  • post_location: для всех
  • и т.д.

Там будет таблица уведомлений. Запись уведомления будет принадлежать либо пользователю, либо SportsTweet. Думаю, я бы смоделировал это с полиморфными ассоциациями.

Это не похоже на путь Rails. Кто-нибудь сталкивался с подобной проблемой? Как ты решил это?

Ответы [ 2 ]

0 голосов
/ 03 апреля 2017

Используйте Devise, если можете.Я думаю, что эта ссылка может помочь вам.

В некоторых приложениях полезно иметь гостевой объект User для передачи даже до того, как (человек) пользователь зарегистрировался или вошел в систему.Обычно вы хотите, чтобы этот гостевой пользователь сохранялся до тех пор, пока сохраняется сеанс браузера.

Наш подход заключается в создании гостевого пользовательского объекта в базе данных и сохранении его идентификатора в сеансе [: guest_user_id].Когда (и если) пользователь регистрируется или входит в систему, мы удаляем гостя и очищаем переменную сеанса.Вспомогательная функция current_or_guest_user возвращает guest_user, если пользователь не вошел в систему, и current_user, если пользователь вошел в систему.

С последующим кодом, который может оказаться полезным на этой странице

0 голосов
/ 13 декабря 2011

Сделал немного поиска, и ответ - STI. См. Rails 3 Way - Глава 9.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...