当我运行rake db:migrate
时,我的rails应用程序运行正常,但是当我尝试启动rails控制台时出现问题。
2.0.0p247 :003 > User
=> User(no database connection)
答案 0 :(得分:77)
这是由于ActiveRecord从4.0
开始懒惰地建立连接。只是不要担心。
第一次建立后,您将开始看到预期的输出。试试这个:
2.1.4 :001 > User
# => User (call 'User.connection' to establish a connection)
2.1.4 :001 > User.count
# => SELECT COUNT(*) FROM "users" ...
2.1.4 :001 > User
# => User(id: integer, email: string, encrypted_password: string, ...)
答案 1 :(得分:30)
简单的解决方案: 控制台可能确实有一个数据库连接,但报告它没有。
要查看是否属实,请在控制台中进行查询。
User.count
这解决了我和同事的误报警告。
或
使用Model.connection
建立连接。
答案 2 :(得分:12)
要在控制台加载后立即恢复显示其列信息的ActiveRecord模型的行为,这里有一个解决方法:
# config/application.rb
console do
ActiveRecord::Base.connection
end
答案 3 :(得分:3)
这不是问题。所有发生的事情都是在需要之前没有实例化连接。