我想確定index
操作中嵌套資源的父模型。如何在索引操作中查找多態嵌套資源的父模型?
(重要:我問的是index
操作僅在所有其他的REST行動是微不足道的尋父模式也已經回答了幾次在SO)
我有這些路線:
resources people do
resources addresses, only: [:index]
end
resources locations do
resources addresses, only: [:index]
end
resources events do
resources addresses, only: [:index]
end
在我AddressesController
的index
行動我想加載父模型,但根據匹配的路由,該參數包含父ID變化名:
/people/1/addresses -> person_id
/locations/1/addresses -> location_id
/events/1/addresses -> event_id
現在我有這個醜陋的代碼在我index
行動:
if params[:person_id]
parent_id = params[:person_id]
parent_type = Person
elsif params[:location_id]
parent_id = params[:location_id]
parent_type = Location
else params[:event_id]
parent_id = params[:event_id]
parent_type = Event
end
@addresses = Address.where(
addressable_type: parent_type,
addressable_id: parent_id)
讓我困擾最深的是,我有每當我添加一個新的嵌套的路線來更新我的控制器。
有沒有更好的方法來確定父模型? (除了簡單地重構上面的代碼)
我的方法與上面的非常相似。我希望有人能給你一個很好的答案,因爲我也很願意清理它。 – theIV