2010-11-29 64 views
-1

這主要是關於最佳實踐的理論問題。我目前正在編寫一個小型瀏覽器遊戲,而且大部分代碼似乎都是用戶模型的實際部分。減少Rails中的模型代碼

這包括(hasQuest,deleteQuest,isLeader,getAlliance,sendMessage)等等。

我在想,也許用戶模型代碼有點過熱。

問題是在User中使用這個函數更自然。例如,當用戶模型作爲實例方法調用時,hasQuest就像實際代碼中的current_user.hasQuest。另一方面,如果作爲TavernQuest的類方法被調用,它將會是TavernQuest.getQuest(current_user),這在語法上感覺更糟。

您認爲如何?我的方式是否正確,或者我應該放棄在用戶模型中使用太多的代碼?

回答

2

模型中的代碼是一件好事(與您的控制器相反)...減少模型膨脹的一個方面是要包含您所包含的模塊。

class User 
    include UserModules::Gameable 
end 

/lib/user_modules/gameable.rb

module UserModules 
    module Gameable 
    def is_leader? 
     leader? #or whatever 
    end 
    end 
end 

除了減少你的user.rb的大小,它會提高代碼的可重用性。

+0

謝謝你,我正在使用一個實用程序模塊,我只需要一個保證,我正在做它正確的方式:) – Spyros 2010-11-29 18:36:42