在初始化程序中需要印象派

时间:2013-06-05 13:31:25

标签: ruby-on-rails rubygems sti

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

然后是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,但这无济于事。

我应该如何要求“印象派”以便我可以进行预加载?

0 个答案:

没有答案