2012-10-31 88 views
1

多態性的觀點和行爲這似乎是一個類似的問題,但答案可能是不同的兩年下來線路:Rails way to render different actions & views based on user type?Rails的基於STI型

我有一個可以有很多種類的STI模型。通常(但並非總是),視圖會根據類型而有所不同。同樣,控制器的動作可能在邏輯上有所不同,具體取決於類型。我想避免基於類型改變if/elsif條件的高維護成本。

我可以想出幾種方法,我可以編寫一些輔助函數/模塊來簡化它,但不知道爲此目的而構建的任何gems是否已經存在。

您的想法感激。

回答

1

只要您在路由文件中聲明它們,您就可以爲不同的STI類型創建單獨的控制器。即。

Base < ActiveRecord::Base 
end 

Foo < Base 
end 

Bar < Base 
end 


#config/routes.rb 
resources :foos 
resources :bars 

然後你只需要生成一個foo控制器和bar控制器及其相應的方法/視圖。

對於常見的元素,您可以使用視圖的partials和Base模型。 (你也許可以使用Base控制器,但我不確定)

+0

它真的不是一個好主意來命名一個類Base ... :) – Lichtamberg