1

tl;博士; 在开发环境中,我想使用is_impressionablefrom 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

那么对于NewsArticle

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并没有帮助。

我应该如何要求“印象派”才能进行预加载?

4

0 回答 0