2014-12-04 36 views
0

關注此帖子How to use concerns in Rails 4試圖獲得關注的工作。但它沒有加載這個問題。如何在第三方寶石中添加關注模型

是否有可能像這樣的問題添加到我無法控制的模型或我應該怎麼做?例如,如果我想將關注點添加到我正在使用的寶石中的模型中。在application.rb中

config.autoload_paths += %W(#{config.root}/app/models/concerns) 

我已經加入關注自動加載我檢查施普雷商務部如何它在docs,但該方法不適合我在所有的工作。

# app/models/concerns/schedule.rb 
module Schedule 
    extend ActiveSupport::Concern 
    ... 
end 

Namespace::Trader.include Schedule 
+0

'module/class Namespace :: Trader;包括附表;結束「,但通常不是修改你不擁有的代碼的好主意。 – avlazarov 2014-12-04 08:51:00

+0

我試圖用控制檯解決它。發現它在開發模式下默認不加載模塊。如果我在irb中調用了「Schedule」,它會加載並應用它。 development.rb的設置eager_load被設置爲false。如果啓用它,它立即可以工作。在開發模式下啓用急切加載的缺點是什麼? – 2014-12-04 09:05:18

回答

0

如果您的應用程序沒有自己的模型Namespace::Trader,也就是說,如果你沒有命名空間/ trader.rb文件在您的應用程序做,那麼你可以做的是創建一個名爲應用程序文件/models/namespace/trader_decorator.rb用下面的代碼:

Namespace::Trader.class_eval do 
    include Schedule 
end 

這應包括Schedule模塊Namespace::Trader類。