tl;博士; 在开发环境中,我想使用is_impressionable
from initializer 预加载模型(因为它使用 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
并没有帮助。
我应该如何要求“印象派”才能进行预加载?