2013-10-17 29 views
11

有沒有辦法配置isolate_namespace方法不使用前綴的表名稱?Rails可安裝引擎與isolate_namespace但沒有前綴名稱空間在表

class Engine < ::Rails::Engine 
    isolate_namespace MyEngine 
end 

此外,分離的發動機將根據命名空間設置其名稱,因此MyEngine :: Engine.engine_name將是「my_engine」。它還會將MyEngine.table_name_prefix設置爲「my_engine_」,將MyEngine :: Article模型更改爲使用my_engine_articles表。 Isolated Engine Docs

在設計原型我遇到了我需要的航線使用隔離命名空間模式的問題,但在數據庫表沒有。這是因爲我正在編寫的可掛載引擎具有自己的自包含數據庫。

如果不可能,不想進一步挖掘。

回答

21

對Rails引擎代碼庫進行了一點挖掘以找到解決方案。 如果您定義了一個方法來指定表名稱前綴(在/lib/my_engine.rb中),它只會用它來代替。所以設置返回零工作正常。

require "my_engine/engine" 

module MyEngine 
    # Don't have prefix method return anything. 
    # This will keep Rails Engine from generating all table prefixes with the engines name 
    def self.table_name_prefix 
    end 
end 
+1

工程!確保將方法保留在類定義之外,並且只在模塊塊中像在答案中一樣。 – Hopstream

+0

@keaplogik。非常感謝。這爲我節省了很多麻煩。希望我可以多勞多得。 – ManojGumber

+0

是的,這個工程。出於好奇,你如何處理引擎的遷移,因爲你不希望它們與主應用混合? – Donato

相關問題