gpt4 book ai didi

ruby-on-rails - config.cache_classes = true 时缺少方法

转载 作者:数据小太阳 更新时间:2023-10-29 08:12:39 24 4
gpt4 key购买 nike

我有两个名为 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

在我看来,打开此设置时加载路径会发生变化。这是真的吗?如果是,是否有解决方法?

最佳答案

我们通过添加以下内容找到了 rake 任务的解决方法:

My::Application.configure do
config.cache_classes = false
end
load "#{Rails.root}/app/models/scope.rb"

这使环境重新加载作用域类,任务运行正常。

pbobb 可能一直在使用保留字 thing,尽管奇怪的是该应用程序仍然可以在所有其他环境中运行。

关于ruby-on-rails - config.cache_classes = true 时缺少方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18644872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com