2010-05-24 47 views
0

我有一個有狀態的模型。在每種狀態下,用戶可能希望對模型實例執行一系列操作。目前,我正在將模型狀態轉換爲使用視圖幫助器在視圖中表示的操作。Rails:如何在有狀態模型中表示可用的視圖操作?

事情是這樣的......模型:

Class Thing 

    def state_is_A? 
    state == 'A' 
    end 

end 

在助手:

def display_available_actions(thing) 
    if thing.state_is_A? 
    link_to <action1> 
    link_to <action2> 
    end 
end 

並在視圖:

<%= display_available_actions(@thing) %> 

我不喜歡事實上模型狀態被翻譯成助手中的視圖動作。我希望將其融入到模型中。另一方面,模型和視圖看起來並不健康。

有沒有比我的方法更適合這種情況的Ruby或Rails成語?每個州應該是一個單獨的模式嗎?

+0

您的方法非常好。我不會擔心這一點。 – Eimantas 2010-05-24 04:29:45

回答

1

我總是使用aasm,它會自動爲您提供那些state_is_A?方法以及SomeModel.states以及有關可用轉換的信息。

+0

謝謝托馬斯,我打算給aasm一個嘗試。 – Greg 2010-05-24 20:01:39

+0

托馬斯,是你的鏈接到明確的AASM?在環顧網絡瞭解更多信息時,我遇到了許多提到的多個AASM分叉。另外,除了自述文件之外的任何文檔,您會建議作爲起點? – Greg 2010-05-25 01:35:16

+0

for rails2是的,在rails3 activesupport帶有一個statemachine,但他們已經排除了它。有趣的小混蛋;-) 文檔明智,README是所有的,一個rdoc應該給你更多的內部API。 – 2010-05-26 08:35:24

相關問題