我有两个名为 Scope 和 ScopeItem 的 ActiveRecord 模型,具有 has_many 关系:
class Scope < ActiveRecord::Base
has_many :scope_items
end
class ScopeItem < ActiveRecord::Base
belongs_to :scope
end
我还有一个后台作业的 rake 任务来加载一堆范围(参考)数据:
task :scopes => :environment do
scope = Scope.create!(
# params
)
5.times do |n|
scope.scope_items.create!({
# more params
})
end
end
end
rake 任务在开发中运行良好,但是当我转到暂存/生产设置时,任务失败,说 Scope 没有名为 scope_items 的方法。
我比较了两种环境下的设置,并通过实验确定如果我更改以下设置,我可以重现开发中的错误:
# development.rb
config.cache_classes = false
# !development.rb
config.cache_classes = true # all others use this
在我看来,打开此设置后加载路径会发生变化。这是真的吗,如果是的话,是否有解决方法?