Простите меня, если на это был дан ответ. Я провел несколько часов, ища ответ на этот вопрос здесь и в Google.Обновить модель с ответом API после отправки формы, в которой используются вложенные атрибуты
Я только начинаю с Ruby on Rails. Я пытаюсь обновить модель данными из ответа API после сохранения данных, первоначально представленных через форму, на две разные модели.
Итак, у меня есть модель пользователя и модель персонажа. Форма регистрации собирает данные о пользователе и их персонаже. Чтобы сделать запрос API, я должен хотя бы получить несколько деталей о символе, который будет передан как часть запрошенных атрибутов (например, имя, область).
Так я использую form_for с вложенными атрибутами:
<%= form_for(@user) do |f| %>
<%= render 'shared/error_messages' %>
<%= f.label :username %>
<%= f.text_field :username %>
<%= f.label :first_name %>
<%= f.text_field :first_name %>
<%= f.label :last_name %>
<%= f.text_field :last_name %>
<%= f.label :email %>
<%= f.text_field :email %>
<%= f.label :password %>
<%= f.password_field :password %>
<%= f.label :password_confirmation, "Password Confirmation" %>
<%= f.password_field :password_confirmation %>
<%= f.fields_for :characters do |builder| %>
<%= builder.label :realm %>
<%= builder.text_field :realm %>
<%= builder.label :name %>
<%= builder.text_field :name %>
<% end %>
<%= f.submit "Sign Up" %>
<% end %>
Это успешно представляет всю информацию пользователя, представленного в модели пользователя и области и имя представленного модели персонажа. Проблем нет. Тем не менее, у меня есть еще несколько полей, которые я хочу заполнить для записей символов, только что созданных из API, который предоставляет всю информацию о символе. Каков наиболее эффективный способ сделать это, чтобы после отправки формы она обновляла запись (или добавляла данные до сохранения записи) с данными, возвращаемыми из API.
Мне не нужна помощь по конкретным полям и возвращенным данным. У меня есть все работающие, я просто ищу способ сделать запрос API и завершить запись со всеми данными сразу после отправки формы.
Хорошо, я попробую это (: before_save). Я реализую это в родительской модели? Также как мне получить доступ к вложенным данным формы для использования в функции обратного вызова? – Valjas
Да, вы можете реализовать это в родительской модели и создать дочерний элемент с функцией объединения рельсов. Взгляните на краткий: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html – Vik
Спасибо Vik! Я смог получить все это, используя обратный вызов (after_save), чтобы обновить запись, используя метод .last. Эта ссылка, которую вы мне дали, была очень информативной. Это именно то, что я искал, насколько объединяются ассоциации. – Valjas