Я новичок в Rails и пытаюсь настроить свои модели, и мне было интересно, как Rails обрабатывает ассоциации.
У меня есть объект квеста, который "принадлежит" или ссылается через внешние ключи на ряд других объектов, включая пользователя и контент:
quest.user_id
quest.a_different_name_id #this is a foreign key to a Content object
оба являются внешними ключами, ссылающимися соответственно на объект User и объект Content.
Пользователь и контент "has_many" квесты.
Я понимаю, что эта настройка позволяет мне делать такие вещи, как:
u = User.create #saves to database
u.quests.build #creates new Quest object with user id set to u.id
Могу ли я сделать что-то в обратном направлении, например:
form_for @quest do |f|
f.text_field :a_user_attribute #an attribute of a User object
f.text_field :a_different_name_attribute #an attribute of a Content object
где форма имеет текстовые поля для атрибутов объектов, на которые объект Quest ссылается через свои внешние ключи, в отличие от наличия формы для фактических внешних ключей, поэтому в контроллере у меня есть:
@quest = Quest.new(params[:quest])
Является ли Rails достаточно умным, чтобы "охватить" определяемые моделью отношения внешних ключей и заполнить, а затем сохранить объекты User и Content и соответствующим образом установить внешние ключи в @quest для ссылки на вновь созданные объекты?
Может ли он сделать это, даже если внешний ключ для объекта Content имеет другое имя, чем content_id?
Надеюсь, это имеет смысл ... дайте мне знать, если я неясен.