Почему я получаю эту ошибку: ActiveRecord :: AssociationTypeMismatch? - PullRequest
0 голосов
/ 10 ноября 2018

Проблема: Я получаю сообщение об ошибке (указано ниже) при попытке сохранить данные формы с одного контроллера на другой.

Ожидается StripeAccount (# 473341532384680), получен "acct_7424613FLPIHiXZ" который является экземпляром String (# 47334237953540)

Вопрос: Что в моем коде создает ошибку?

У меня есть форма ввода, которая работает, но я хочу взять из нее некоторые данные и добавить их в другое место на отдельный контроллер.

Форма предназначена для пользователей и контроллера stripe_account. Я хочу взять acct.id из stripe_account, а также сохранить его в таблице @user в stripe_account.

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

  has_one :stripe_account

Stripe_account Модель:

  belongs_to :users

Контроллер Stripe_account:

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

      end

    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({
.....
.....
    @stripe_account.acct_id = acct.id
#below is what isn't working
    @user.stripe_account = acct.id

  respond_to do |format|
      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 | %>

Маршруты:

resources :users do
    resources :stripe_accounts
  end

, но получил ошибку: StripeAccount (# 473341532384680) ожидается, получил «acct_7424613FLPIHiXZ», который является экземпляром String (# 47334237953540)

... В схеме Users у меня есть "stripe_account" в виде строки.

Я пытался

acct_id = current_user.stripe_account

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

1 Ответ

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

Если кто-нибудь сталкивался с этим. У меня были проблемы с записью данных из формы в 2 таблицы контроллеров.

Это то, что я сделал, чтобы исправить это (спасибо пользователю stackO) @ arieljuod

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

//and then saving from this://
    if @stripe_account.save!
//to this://
    if @stripe_account.save! && @user.save
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...