tl; dr; 在开发环境中,我想从初始化程序中预加载is_impressionable
的模型(因为它使用的是STI)。但是在预加载undefined method is_impressionable
期间发生了错误。
我已经尝试require 'impressionist'
它不起作用。我应该如何在初始化器中加载印象派呢?
长版本我有一堆STI模型,想为它们添加is_impressionable
。
代码就像
class Post < ActiveRecord::Base
is_impressionable counter_cache: true
class << self
attr_reader :child_classes
end
def self.inherited(child)
@child_classes << child
super
end
def self.select_options
self.child_classes.map { |c| c.to_s }.sort
end
def self.child_classes
@child_classes
end
end
然后是News
和Article
class News < Post
end
class Article < Post
end
为了确保我的选择选项在开发模式下工作,我需要预加载我的STI模型我有这个初始值设定项config/initializers/preload_sti_models.rb
if Rails.env.development?
%w[post news article].each do |c|
require_dependency File.join("app", "models", "#{c}.rb")
end
end
现在问题是初始化发生时似乎is_impressionable
不可用。我已尝试在require "impressionist"
中添加preload_sti_models.rb
,但这无济于事。
我应该如何要求“印象派”以便我可以进行预加载?