2011-03-08 62 views
0

你可以像这样创建和初始化一个ActiveRecord对象吗?我需要一个连接来使用ActiveRecordObject.new吗?

exercise = Exercise.new 
exercise.name = "foo" 
exercise.description = "bar" 
exercise.unit_id = 123 

我试图做到这一点,我不断收到

ActiveRecord::ConnectionNotEstablished - ActiveRecord::ConnectionNotEstablished: 
/usr/lib/ruby/1.8/active_record/connection_adapters/abstract/connection_pool.rb:326:in `retrieve_connection' 
/usr/lib/ruby/1.8/active_record/connection_adapters/abstract/connection_specification.rb:123:in `retrieve_connection' 
/usr/lib/ruby/1.8/active_record/connection_adapters/abstract/connection_specification.rb:115:in `connection' 
/usr/lib/ruby/1.8/active_record/base.rb:1271:in `columns' 
/usr/lib/ruby/1.8/active_record/base.rb:3014:in `attributes_from_column_definition_without_lock' 
/usr/lib/ruby/1.8/active_record/locking/optimistic.rb:55:in `attributes_from_column_definition' 
/usr/lib/ruby/1.8/active_record/base.rb:2434:in `initialize' 
main.rb:14:in `new' 

我只是想创建和初始化,然后调用对象的一个​​方法.save。如果我错误地解决了这个问题,请告诉我。

回答

2

简答:是的,你需要一个连接!

除非有连接,否则不能(通常)使用ActiveRecord。

对象上的一组属性由表中的列确定。这意味着除非你有连接,否则你不能使用这个对象。

在任何情况下,如果没有连接,致电exercise.save后会发生什么?

因此,如果您只需要验证,就可以在瞬态类上重用ActiveSupport :: Validation。

+0

+1迄今为止唯一回答问题的答案。 :) – 2011-03-08 05:43:43

+0

感谢您的答案。我创建了一个save_to_database()方法来打开一个连接并将该对象保存到正确的表中。我没有意识到AR需要阅读表格以了解它具有哪些列。 – 2011-03-08 12:44:11

0

这意味着Rails无法连接到您的数据库。确保您的数据库服务器处于打开状态(如果适用),并且您的config/database.yml file是正确的。

相关问题