【发布时间】:2018-03-31 22:50:42
【问题描述】:
我有一个Accounts 模型,其中有许多CreditCards 和一个BillingInfo。
在CreditCards 控制器中,我在CollectionProxy 的帮助下进行初始化:
class CreditCardsController < ApplicationController
def create
credit_card = current_account.credit_cards.new(credit_card_params)
...
end
end
但是,这不适用于has_one 关联:
class BillingInfosController < ApplicationController
def create
billing_info = current_account.billing_info.new(billing_info_params)
...
end
end
原因是;在current_account 上调用billing_info 确实返回nil 而不是空的CollectionProxy,这导致在nil 上发送new 并与NoMethodError 存在。
有没有办法使用CollectionProxy或类似的东西继续使用
current_account.billing_info.new(billing_info_params)
而不是类似的东西
BillingInfo.new(billing_info_params.merge(account_id: current_account.id))
初始化?提前致谢!
【问题讨论】:
-
我觉得你太努力了。 Rails 内置了此功能,因此您可以在 CreditCardsController 中完成所有这些操作。阅读this 看看是否有帮助。