我有一个Payment
和Coupon
控制器。
Payment
has_one Coupon
和Coupon
属于Payment
。
我的付款表格中有一个text_field :Coupon
,可将其添加到payment
中。创建Payment
时,我在PaymentsController#create 中收到错误消息 ActiveRecord :: AssociationTypeMismatch。我之前搜索过此错误,解决方法是将nested_form
添加到Payment
。但是我认为这是错误的。因为我不想在创建coupon
时创建新的payment
,所以我只想将现有的Coupon
添加到Payment
我该如何解决?在Payment
和Coupon
之间交换关联? Payment
属于Coupon
,而Coupon
has_one Payment
?
更新:
我删除了has_one coupon
,并将voucher(string)
列添加到付款模型中。不再显示此错误。我听不懂谁能向我解释原因?
答案 0 :(得分:0)
您得到ActiveRecord::AssociationTypeMismatch in PaymentsController#create
,因为Rails希望您传递Coupon对象,而您没有。
要实现您想要的功能,您将需要使用您提到的嵌套表单,或者使用种子或在数据库中创建优惠券。
然后在您的表单中有一个优惠券下拉菜单,用户可以在其中选择要应用的优惠券。