2013-08-02 70 views
0

我在我所使用的模型/控制器和類文件組織模型/控制器和類在子文件夾

/app/models/friends/friend.rb 
/app/controllers/friends/friends_controller.rb 
/lib/classes/friends/friend.rb 

我嘗試添加所有的模型下面的名字Rails項目的工作軌道,控制器和類文件在application.rb中的autoload路徑中。 但是我面臨的問題,因爲類名是相同的。

我該如何處理?並以文件按名稱空間組織的方式組織文件。

感謝, 巴蘭

+0

你能分享類也? –

回答

0

類名是相同的,但路徑的不同,你不需要類添加到自動加載除了/lib/classes/friends/friend.rb

你有沒有嘗試以下方法:

# app/models/friends/friend.rb 
class Friends::Friends 
    #... 
end 
# Friends::Friends.new 

# app/controllers/friends/friends_controller.rb 
class Friends::FriendsController < ApplicationController 
    #... 
end 

# lib/classes/friends/friend.rb 
module Classes 
    module Friends 
    class Friends 
     #... 
    end 
    end 
end 
# Classes::Friends::Friends.new 

要添加lib文件自動加載您的applicaion.rb

config.autoload_paths += %W(#{config.root}/lib) 
1

更好的方法是使用Rails Engines &將您的應用程序劃分爲獨立的模塊。

rails plugin new friends --full --mountable --dummy-path spec/dummy 

上述命令將生成具有分離的名稱空間中的完全安裝的發動機,這意味着所有來自該發動機控制器和車型將發動機的命名空間內被隔離。例如,以後的Post型號將被稱爲Friends::Post,而不是簡單的Post。安裝到您的主樑內部應用程序這個程序,你需要做兩兩件事:

添加條目的Gemfile

gem 'friends', path: "/path/to/friends/engine" 

,然後添加路由配置/ routes.rb中

mount Friends::Engine, at: "/friends" 

更多這一計算策略信息,結賬: