我正在使用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
,我沒有在創建方法。
另外我相信這是違背創建數據的燼方法,但我還沒有開始。
我相信我走在正確的道路上,但有些東西沒有加起來,這已經耗費了我太多的時間。
我仍在爲此工作,所以如果您需要更多信息,請告訴我。
貌似這是它,我確信我嘗試過,但之前沒有工作。也許我正在傳遞不同的數據。 – Rick