Как сохранить данные формы в 2 таблицы данных? - PullRequest
0 голосов
/ 11 ноября 2018

Я хочу сохранить данные из формы в 2 разных таблицах.

У меня есть это в контроллере учетной записи в полосе: def create @stripe_account = StripeAccount.new(stripe_account_params) @user = User.find(params[:user_id]) @stripe_account.user_id = current_user.id acct = Stripe::Account.create({ :country => "US", :type => "custom", legal_entity: { first_name: stripe_account_params[:first_name].capitalize, last_name: stripe_account_params[:last_name].capitalize, type: stripe_account_params[:account_type], dob: { day: stripe_account_params[:dob_day], month: stripe_account_params[:dob_month], year: stripe_account_params[:dob_year] }, address: { line1: stripe_account_params[:address_line1], city: stripe_account_params[:address_city], state: stripe_account_params[:address_state], postal_code: stripe_account_params[:address_postal] }, ssn_last_4: stripe_account_params[:ssn_last_4] }, tos_acceptance: { date: Time.now.to_i, ip: request.remote_ip } }) @stripe_account.acct_id = acct.id #issue is here at @user @user.stripe_token = acct.id if @stripe_account.save! format.html { redirect_to new_bank_account_path, notice: 'Stripe account was successfully created.' } format.json { render :show, status: :created, location: @stripe_account } else format.html { render :new } format.json { render json: @stripe_account.errors, status: :unprocessable_entity } end end end Форма:

  <%= form_for ([@user, @stripe_account]) do | f | %>

Модель пользователя:

  has_one :stripe_account

Stripe_account Модель:

  belongs_to :users

acct.id сохраняется в таблице stripe_account, но не в пользовательской таблице. В пользовательской таблице есть запись user.stripe_account.

Как сохранить acct.id в обеих таблицах?

1 Ответ

0 голосов
/ 11 ноября 2018

Я предполагаю, что вы делаете @stripe_account.save, а не @user.save (почему вы сократили свой метод?).

Вы можете добавить @user.save или установить ассоциацию own_to с опцией autosave: true.

Я бы порекомендовал вам изменить это:

@stripe_account = StripeAccount.new(stripe_account_params)
@user = User.find(params[:user_id])
@stripe_account.user_id = current_user.id

к этому, хотя:

@user = User.find(params[:user_id])
@stripe_account = @user.build_stripe_account(stripe_account_params)

Я не думаю, что автосохранение будет работать, если вы установите только идентификатор, а не реальный объект.

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