Jac*_*R-G 3 rake model ruby-on-rails-3
在我的sample_data.rake文件中,我有命令" Diner.create!(...)"导致" uninitialized constant Diner"错误.但是,如果我在Rails控制台中执行相同的"Diner.create!(...)"命令,则表示成功.如果我在sample_data.rake文件中"需要"模型,我会得到错误" ActiveRecord::ConnectionNotEstablished",其中backtrace显示为" active_record/connection_adapters/abstract/connection_pool.rb:318:in retrieve_connection'".这是我的diner.rb文件:
class Diner < ActiveRecord::Base
has_many :redemptions
has_many :surveys, :through => :redemptions
end
Run Code Online (Sandbox Code Playgroud)
并且导致问题的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
Run Code Online (Sandbox Code Playgroud)
删除上述代码会导致文件成功处理.而且,正如我之前所说,上面的代码在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
Run Code Online (Sandbox Code Playgroud)
你看到那task :populate => :environment do行,它告诉rake启动环境任务[1],然后执行你现在可以访问你的模型和数据库的任务
[1] railties-3.0.4/LIB /轨道/ application.rb中#214
[1] railties-3.0.4/LIB /轨道/ application.rb中#101
干杯
| 归档时间: |
|
| 查看次数: |
3617 次 |
| 最近记录: |