Как эффективно работать с несколькими таблицами базы данных в Ruby on Rails - PullRequest
1 голос
/ 04 января 2012

У меня есть небольшой проект, который поможет мне улучшить программирование на ruby ​​on rails.До сих пор я выполнил полную регистрацию пользователя и аутентификацию со сбросом пароля, функцией запомнить меня и уведомлениями по электронной почте.Я полностью понимаю, что происходит.

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

имя, фамилия, дата рождения, место, где он будет иметь свой профиль для меня.их фотографии

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

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

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

Впервые я буду работать с несколькими таблицами, и у меня есть идея, как это сделать, но я не уверен.Буду признателен за любой совет, например, краткое объяснение того, как вы этого добьетесь.

С уважением

Ответы [ 2 ]

1 голос
/ 04 января 2012

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

Используете ли вы devise или что-то подобное для аутентификации?Если да, то, вероятно, у вас есть таблицы, созданные в соответствии с требованиями этого драгоценного камня.Если вы посмотрите на разделение интересов, все, что необходимо для системы аутентификации + авторизации, в значительной степени включено в вашу существующую таблицу пользователей.Я хотел бы подойти к нему, спросив - есть ли какая-то польза от объединения данных вашего профиля (особенно если это больше, чем пара текстовых полей) с этой таблицей?Я не вижу ни одного, особенно учитывая тот факт, что профили или пользовательские постоянные данные больше не гарантируют, что они будут состоять из одного изображения и 2-3 текстовых полей.Например, на сайтах социальных сетей профиль может занять свою жизнь.

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

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

1 голос
/ 04 января 2012

Не вижу необходимости иметь отдельную таблицу для профиля пользователя. Я говорю так, потому что сейчас отношения между пользователем и профилем - это отношения один-к-одному. У пользователя будет только один профиль. Если у пользователя не будет более одного профиля, я не думаю, что вам нужна отдельная таблица для профиля пользователя. Вы можете просто добавить дополнительные столбцы в пользовательскую таблицу для хранения пользовательских (необязательных) атрибутов.

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

<input value='dennis' name='user[first_name]'/>

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

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