我正在實現幾個類,它本身沒有數據,只是邏輯。這些類實現了迄今爲止的訪問控制策略,這取決於從其他模型的數據中取得的幾個參數。我如何模塊化Rails模型?
我最初試圖找到答案「在哪裏存儲這樣的類?」在這裏,答案是apps/models
目錄。沒關係,但我喜歡將這些類從層次結構中的ActiveRecord繼承類清楚地分離出來,無論是作爲文件還是類。
因此,我在Logic
模塊內創建了類,如Logic::EvaluationLogic
或Logic::PhaseLogic
。我也想要在這些邏輯之間傳遞的常量。我更喜歡將這些常量放入Logic
模塊中。因此,我實現這樣的:
# in logic/phase_logic.rb
module Logic
PHASE_INITIAL = 0
PHASE_MIDDLE = 1000
class PhaseLogic
def self.some_phase_control_code
end
end
end
# in logic/evaluation_logic.rb
module Logic
class EvaluationLogic
def self.some_other_code
Logic::PhaseLogic.self.some_phase_control_code(Logic::PHASE_INITIAL)
end
end
end
現在,它工作的很好rspec
(它通過測試,我沒有問題寫的),但不能與開發服務器,因爲它不能找到Logic::PHASE_INITIAL
不變。
我懷疑它與Rails的自動加載方案和我想要做的不匹配有關。我試圖調整軌道,但沒有運氣,最終取消了module Logic
包裹。
現在我想問的問題是:我如何使用Rails來組織這些類? 此刻我正在使用3.2.1。
發佈的後續問題「How I can organize namespace of classes in app/modules with rails?」
也許在'lib/logic /'中,並在相關模型中包含/擴展? – Brian 2012-03-14 12:45:02