Как я должен разработать функциональность входа пользователя - PullRequest
2 голосов
/ 14 сентября 2009

Я создаю приложение на Rails и хочу иметь возможность регистрации / входа в систему. Мне также нужно иметь другие поля в модели пользователя, такие как адрес (улица, город, страна), информация в facebook, информация в твиттере, время последнего входа в систему и т. Д.

С точки зрения дизайна, лучше ли иметь модель User очень легковесной и иметь просто имя пользователя / пароль / адрес электронной почты и оставить другие поля для отдельной модели, например "профиль", или лучше объединить те вещи вместе?

Меня больше всего интересует производительность.

Спасибо

Tam

Ответы [ 6 ]

1 голос
/ 15 сентября 2009

Еще один голос за ту же модель. Если вы думаете о производительности, вы, вероятно, пишете свой собственный запрос выбора и т. Д., Поэтому, на мой взгляд, не имеет значения, насколько тощей или толстой является модель в вашем случае.

1 голос
/ 15 сентября 2009

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

Что касается ответов других, я вижу их точку зрения, простота часто очень полезна, но я не согласен с тем, что правильный ответ заключается в том, чтобы поместить всю эту информацию в вашу пользовательскую модель. Я бы рассмотрел вашу заявку в целом, сколько моделей у вас, вероятно, будет в общей сложности, скольким из них понадобятся адреса, например? Сразу же мне очень хотелось бы перенести адрес хотя бы в отдельную модель.

Лично я считаю, что лучше начинать с нормализованных таблиц, чем, возможно, оценивать денормализацию, если вы можете оправдать увеличение производительности. Помните, что вы, вероятно, будете часто загружать пользовательский объект, если вы достигнете высокой скорости входа в систему, что раздутая модель может стать источником для улучшения, что позже будет сложнее сделать, чем сейчас.

Как и в большинстве случаев, это компромисс, на который нужно ответить при каждом наборе обстоятельств. Я надеюсь, что другое понимание пригодится, я просто думаю, что вы должны рассмотреть и другую сторону медали, надеюсь, это поможет.

1 голос
/ 14 сентября 2009

Здесь также рекомендуется использовать одну модель вместе с Authlogic. Фантастическая библиотека.

1 голос
/ 14 сентября 2009

Я бы согласился определенно сохранить это в одной модели. Если позже вам придется расширить / удалить модель User, это сократит вашу работу. Что еще более важно, если вы разрабатываете свою модель User достаточно хорошо, вам может даже не потребоваться дополнительная модель «Profile», поскольку большая часть логики / описания для пользователя содержится в исходной модели User. Затем вы могли бы просто создать профиль или контроллер «Учетные записи», который предоставляет части модели пользователя, которую вы считаете необходимой. Сначала решите, нужен ли вам объект "Профиль", и переходите оттуда. Если нет, вы все равно можете создать его, но сэкономите на необходимости создания другой модели для обслуживания.

1 голос
/ 14 сентября 2009

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

1 голос
/ 14 сентября 2009

Я бы сказал, соедините их. Я думаю, что вы просто создадите больше работы для себя без достаточного выигрыша, чтобы оправдать это, если вы разделите информацию таким образом.

Authlogic, пожалуй, самый хороший плагин для работы с аутентификацией, если вы ищете его. Он распознает некоторые из интересующих вас полей (например, последний логин и т. Д.) И автоматически заполняется. Список есть на их сайте.

...