Rails 5: ошибка AssociationTypeMismatch при создании платежа - PullRequest
0 голосов
/ 13 июня 2019

У меня есть Payment и Coupon контроллер.Payment has_one Coupon, а Coupon принадлежит_ Payment.У моей формы оплаты есть text_field :Coupon, чтобы добавить ее к payment.Когда Payment создается, я получил сообщение об ошибке ActiveRecord :: AssociationTypeMismatch в PaymentsController # create .Я искал эту ошибку раньше, решение добавить nested_form к Payment.Но я думаю, что это будет неправильно.Поскольку я не хочу создавать новые coupon при создании payment, я просто хочу добавить существующие Coupon в Payment Как я могу решить эту проблему?Поменяться местами между Payment и Coupon?Payment принадлежит_ Coupon и Coupon has_one Payment?

Обновление: я удаляю has_one coupon и добавляю столбец voucher(string) в модель платежа.Эта ошибка больше не отображается.Я не могу понять.Кто-нибудь может объяснить мне причину?

1 Ответ

0 голосов
/ 13 июня 2019

Вы получаете ActiveRecord::AssociationTypeMismatch in PaymentsController#create, потому что Rails ожидает, что вы передадите объект Coupon, а вы нет.

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

Затем в вашей форме есть выпадающий список купонов, в котором пользователь может выбрать, какой из них он хочет применить.

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