创建付款时的Rails 5:AssociationTypeMismatch错误

时间:2019-06-13 16:42:00

标签: ruby-on-rails ruby-on-rails-5

我有一个PaymentCoupon控制器。 Payment has_one CouponCoupon属于Payment。 我的付款表格中有一个text_field :Coupon,可将其添加到payment中。创建Payment时,我在PaymentsController#create 中收到错误消息 ActiveRecord :: AssociationTypeMismatch。我之前搜索过此错误,解决方法是将nested_form添加到Payment。但是我认为这是错误的。因为我不想在创建coupon时创建新的payment,所以我只想将现有的Coupon添加到Payment 我该如何解决?在PaymentCoupon之间交换关联? Payment属于Coupon,而Coupon has_one Payment

更新: 我删除了has_one coupon,并将voucher(string)列添加到付款模型中。不再显示此错误。我听不懂谁能向我解释原因?

1 个答案:

答案 0 :(得分:0)

您得到ActiveRecord::AssociationTypeMismatch in PaymentsController#create,因为Rails希望您传递Coupon对象,而您没有。

要实现您想要的功能,您将需要使用您提到的嵌套表单,或者使用种子或在数据库中创建优惠券。

然后在您的表单中有一个优惠券下拉菜单,用户可以在其中选择要应用的优惠券。