我有一个Order
的孩子,是一个User
的孩子。我希望能够通过我的tax_exempt
表单在User
上设置create_quote
属性。我已将以下代表添加到我的Order
模型中:
class Order < ApplicationRecord
belongs_to :user
delegate :tax_exempt, to: :user, prefix: true
delegate :tax_exempt=, to: :user, prefix: true
end
提交表单时(创建时),出现以下错误:
Module::DelegationError (Order#user_tax_exempt= delegated to user.tax_exempt=, but user is nil:
我已经验证,并且user_id
不是nil
,并且已在我的参数中提交。即使在我的控制器中,当我用以下代码强制用户使用时,我仍然会遇到相同的错误:
order = User.first.orders.create(parameters)
该操作在编辑时确实起作用。我不明白为什么我不能通过委托设置父User
的属性。提前致谢。
更新
以下代码从Rails控制台产生相同的错误:
User.first.orders.build(tax_exempt: true).save!
再往前走,并确保User
不会因为某些未知原因而在某处被覆盖,我尝试了以下代码,该代码再次仍然产生相同的错误:
User.first.orders.build(tax_exempt: true, user_id: User.first.id).save!