Идентификаторы в приложении rails

#ruby-on-rails

#ruby-on-rails

Вопрос:

В моем приложении у меня есть модель пользователя и модель адреса. Как мне включить в адресную форму идентификатор пользователя id. (т. е. в моей адресной модели есть id и id_user)?

Ответ №1:

Ваша адресная модель должна содержать user_id поле, а не id_user field. Похоже, вы только начинаете работать с Rails, поэтому я бы рекомендовал прочитать официальные руководства по началу работы и основам объединения, чтобы изучить основы.

Ответ №2:

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

Поскольку вы потратили время на создание двух отдельных моделей (одной для пользователей и одной для адресов) Я полагаю, это потому, что у вас может быть один или несколько адресов для каждого пользователя. Поэтому я бы рекомендовал использовать ассоциацию has_many

В вашем файле миграции для вашей адресной модели у вас должно быть имя столбца user_id типа integer . По соглашению rails будет использовать столбцы с именами model_id для ассоциации с моделью. Итак, в вашем случае модель user может быть связана с адресом через столбец user_id .

Однако наличия столбца недостаточно. Вам также необходимо сообщить Rails об ассоциации в модели. Итак, добавьте следующее в начало вашей пользовательской модели (я бы предположил, app / model /user.rb)

 has_many :addresses
  

Затем сообщите вашей адресной модели, что она принадлежит пользователю. Это опять же очень просто. Добавьте следующее в верхней части вашей адресной модели (app /model/address.rb)

 belongs_to :user
  

Оттуда вы можете делать всевозможные замечательные вещи. Чтобы создать свои формы, вы можете захотеть просмотреть вложенные формы модели. В нем есть два Railscast, часть 1 и часть 2

Поскольку ваш опыт работы с Rails на данный момент кажется ограниченным. Я бы порекомендовал также ознакомиться с руководством по началу работы, посмотреть серию руководств от Envy Labs (с забавным названием Rails for Zombies), а когда вы приступите к работе, просмотрите Railscasts Райанса Бейтса