has_many的强参数:通过 - Rails-API
问题描述:
我正在使用rails作为一个呃应用程序的API服务(可能不是正确的方法,但忍受着我)。我正努力让自己的头脑围绕着我主要模型的强大参数。has_many的强参数:通过 - Rails-API
我的车型有:
class LoanApplication < ActiveRecord::Base
# Relationships
has_many :entity_application_links
has_many :entities, through: :entity_application_links
# Nested attributes_for
accepts_nested_attributes_for :entity_application_links, :entities
end
class EntityApplicationLink < ActiveRecord::Base
# Relationships
belongs_to :entity
belongs_to :loan_application
end
class Entity < ActiveRecord::Base
# Relationships
has_many :entity_application_links
end
我LoanApplicationController强PARAMS:
def loan_application_params
params.require(:loan_application).permit(
:title,
:application_state_id,
:custom_data,
:user_id,
entity_application_links: [
:id,
:loan_application_id,
:entity_id,
entity: [:name]
]
)
end
测试这个我发送以下数据LoanApplicationController#创建:
def create
@loan_application.user = current_user
if @loan_application.save
render json: @loan_application, status: :created
else
render json: @loan_application.errors, status: :unprocessable_entity
end
end
数据:
{
:title=>"Jeanie Deckow",
:entity_application_links=>[
{
:entity=>{:name=>"entity1"}
}
]
}
我已经尝试了大量的测试数据和强参数的变体,但它似乎从来没有似乎工作。
随着目前的配置我得到EntityApplicationLink(#69859611738960) expected, got ActionController::Parameters(#69859594766540)
,我认为它期待的EntityApplicationLink实例,但我传递参数。做一些研究,我已经看到,我应该使用entity_application_links_attributes
来代替,但似乎预计loan_application_id
,我没有在创建方法。
另外我相信这是违背创建数据的烬方法,但我还没有开始。
我相信我走在正确的道路上,但有些东西没有加起来,这已经耗费了我太多的时间。
我仍在为此工作,所以如果您需要更多信息,请告诉我。
答
似乎在您的示例代码中可能缺少某些东西?
我假设在创建操作之前的某个时间点 - 也许在过滤器之前 - 您正在设置贷款申请的实例?
无论如何,我认为你会希望你坚强的PARAMS设置为使用entity_application_links_attributes而非entity_application_links,否则活动记录将被期待的实体应用程序链接的实例中传递。
貌似这是它,我确信我尝试过,但之前没有工作。也许我正在传递不同的数据。 – Rick