Rails: одна модель для аутентификации и информации профиля или 2 отдельные модели

Во многих учебных пособиях (особенно для аутентификации) докладчики советуют помещать информацию об аутентификации и профиле пользователя в одну и ту же таблицу (модель) под названием User.

У меня простой вопрос: безопасно ли класть все в одну таблицу? (бонус: это лучшая практика?)

Я бы предпочел разделить информацию для аутентификации (адрес электронной почты, пароль, соль и т. Д.) И информацию профиля (имя, фамилию, день рождения, местоположение, пол и т. Д.) В двух моделях: Пользователь (для аутентификации) и Профиль и связывание моделей с помощью ассоциаций has_one / own_to.

Я не прав? Что вы мне предлагаете?

Спасибо.


person htaidirt    schedule 20.08.2012    source источник
comment
Может, этот вопрос вам поможет. stackoverflow.com/questions/8555686/   -  person emrahbasman    schedule 20.08.2012


Ответы (2)


Если вы хотите следовать нормализации базы данных, вам следует разделить таблицы. Однако иногда это не лучший вариант ... Например, если в вашей таблице users есть только email, password (для аутентификации) и name. Я не буду создавать profile таблицу только для хранения name, верно?

Таким образом, принятие дизайнерских решений будет зависеть от ваших требований ....

Я нашел этот интересный пост об этом, где @D Roddis объясните некоторые преимущества и недостатки трех разных подходов: Storing User Profile in Users Table, Storing User Profile in User_Profile Table 1-1 relationship to users и Storing User Profile as properties and values in tables.

Я надеюсь, что это помогает...

person gabrielhilal    schedule 20.08.2012

Я бы сам поместил их в отдельные модели.

Сколько действий одновременно работает с пользователем и профилем? Немного. В обеих конструкциях много всего, где им не нужно ничего знать (или ничего, кроме идентификатора) друг о друге.

person Tony Hopkinson    schedule 20.08.2012