gpt4 book ai didi

ruby-on-rails-3 - Rake 中模型引用的未初始化常量错误

转载 作者:行者123 更新时间:2023-12-01 09:06:40 25 4
gpt4 key购买 nike

在我的 sample_data.rake 文件中,我的命令“Diner.create!(...)”会导致“uninitialized constant Diner”错误。但是,如果我在 Rails 控制台中执行相同的“Diner.create!(...)”命令,它就会成功。如果我在 sample_data.rake 文件中“要求”模型,我会收到错误“ActiveRecord::ConnectionNotEstablished”,回溯显示“active_record/connection_adapters/abstract/connection_pool.rb:318 :inretrieve_connection'"。这是我的diner.rb 文件:

class Diner < ActiveRecord::Base
has_many :redemptions
has_many :surveys, :through => :redemptions
end

而导致问题的sample_data.rake文件中的代码是:

99.times do |n|
gender = rand(1) == 0 ? "male" : "female"
birthdate = Date.ordinal(DateTime.now.year - 13 - rand(62), rand(364)+1)
Diner.create!(:gender => gender, :birthdate => birthdate)
end

删除上述代码会导致文件成功处理。而且,正如我之前所说,上面的代码在 rails 控制台中可以正常工作。

最佳答案

您的 rake 任务显然缺少 rails 环境。如果您的任务具有以下结构并且您的模型在 $LOAD_PATH 内,那么一切都应该没问题:

     namespace :yourapp do
desc "Create sample data"
task :populate => :environment do
# create other data
99.times do |n|
gender = rand(1) == 0 ? "male" : "female"
birthdate = Date.ordinal(DateTime.now.year - 13 - rand(62), rand(364)+1)
Diner.create!(:gender => gender, :birthdate => birthdate)
end
end
end

您看到 task :populate => :environment do 行,它告诉 rake 启动环境任务[1],然后执行您的任务,该任务现在可以访问您的模型和数据库

[1]railties-3.0.4/lib/rails/application.rb#214

[1]railties-3.0.4/lib/rails/application.rb#101

干杯

关于ruby-on-rails-3 - Rake 中模型引用的未初始化常量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6606278/

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