在發展中,我試圖通過包括ActiveRecord::Base
類中的方法,使他們能夠配置的車型,它會給我一個鉤到模型添加到全局陣列收集我的應用程序中的所有車型。Rails的引擎不緩存
module EngineName
module ActiveRecordExtensions
extend ActiveSupport::Concern
included do
def self.inherited(klass) #:nodoc:
klass.class_eval do
def self.config_block(&block)
abstract_model = EngineName::AbstractModel.new(self)
abstract_model.instance_eval(&block) if block
EngineName::Models.add(abstract_model)
end
end
end
end
end
end
我的EngineName::Models
類只是一個包裝所有模型的包裝。
module EngineName
class Models
class << self
def all
@models ||= []
end
alias_method :models, :all
def navigation
@models - excluded_navigation_models
end
def routed
@models - excluded_route_models
end
# Creates an array of models if none exists. Appends new models
# if the instance variable already exists.
def register(klass)
if @models.nil?
@models = [klass]
else
@models << klass unless @models.include?(klass) || excluded_models.include?(klass)
end
end
alias_method :add, :register
end
end
end
在每個刷新雖然,我的模型內的config_block
方法被調用並依次唱完我追加全球的車型陣列中相同的模型。
正如你可以看到下面了,每當我通過我的所有車型環,它將繼續追加本身。
有什麼辦法,以我的引擎內的緩存某些類型的?或者在我的模型中使用鉤子註冊模型的方法中是否存在缺陷?
我會試試這個,讓你知道它是怎麼回事,謝謝!我會把它標記爲正確的,但我想先試試它......如果你不介意的話:) – Garrett 2011-03-08 19:34:08
這個工程,感覺更合乎邏輯...允許我把它分解以及incase我只想要一些模型在某些地方。再次感謝! – Garrett 2011-03-08 19:49:30