0
目前我有一個具有佈局的Slide模型。基於參數查詢不同的模型 - 重構
幻燈片放映動作呈現基於佈局不同的東西,但每個佈局需要查詢不同的模型。目前,我在我的控制器中有一個case語句,用於根據需要加載需求。
例如
def show
@slide = Slide.find(params[:id]
case @slide.layout
when 'products'
@products = Product.where(display: true)
when 'strategy'
@strategy = Strategy.all
when 'summary'
@quit_attempt = QuitAttempt.where(user_id: current_user.id)
@user_products = Product.where(user_id: current_user.id)
@habits = Habit.all
end
end
這是處理這個問題的最好方法嗎?有更多的佈局和不同的需求,這導致了一個很大的控制器行動。我還可以做什麼作爲替代。
我想我可以限定在讓他們的模型的方法和傳遞數組返回給控制器,以零爲未例如需要事
@products, @strategy, @habits = @slide.layout_requirements
任何意見,將不勝感激如何我可以重構這一點。
對不起,我應該更清楚了。雖然這可以用於上面的示例2,但某些佈局查詢多個模型,但我會編輯以使其更清晰。我試圖簡潔而不是過於複雜的東西 –
請檢查編輯的答案 – Himesh
我這樣做,我認爲閱讀比大量的案例陳述要容易得多。我想我會使用send而不是eval。謝謝。我會拭目以待,如果不接受你的回答 –