2014-01-11 48 views
34

我的导轨应用程序工作正常,并且当我运行rake db:migrate正在工作正确。 现在当我尝试启动rails控制台时出现问题。在导轨控制台中没有数据库连接

2.0.0p247 :003 > User 
=> User(no database connection) 

回答

27

简单的解决方案: 控制台可能确实有一个数据库连接,但报告说,事实并非如此。

要查看是否属实,请在控制台中进行查询。

User.count 

修复了我和同事的误报警告。

使用Model.connection建立连接。

+0

你应该接受你自己的答案,如果问题解决。 –

+0

当然,只有我可以在2天内接受它 – ben

+0

感谢您的解决方案 – akbarbin

3

这不是问题。所发生的只是连接在需要之前没有实例化。

+0

这就是我的想法。谢谢。 –

71

这是由于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, ...) 
+0

你如何*不*懒惰地创建你的连接?这有什么好处? – Trip

+0

@Trip我假设它在应用程序中保存内存。为什么要加载你没有用过的东西到内存中,在时间到来的时候处理它。 – icantbecool

+0

节省了我的时间..非常感谢 – Agnes

5

要恢复的ActiveRecord模型控制台后,立即显示其列信息的行为已加载,这里是一个解决办法:

# config/application.rb 
console do 
    ActiveRecord::Base.connection 
end 
+0

这使过程自动化很好 – Magnum