我是否需要连接才能使用ActiveRecordObject.new?

时间:2011-03-08 02:29:42

标签: ruby activerecord initialization

您可以像这样创建和初始化ActiveRecord对象吗?

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方法。如果我这样做不正确,请告诉我。

3 个答案:

答案 0 :(得分:2)

简答:是的,您需要连接!

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

对象上的属性集由表上的列确定。这意味着除非您有连接,否则无法使用该对象。

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

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

答案 1 :(得分:0)

这意味着Rails无法连接到您的数据库。确保您的数据库服务器已启用(如果适用),并确保config/database.yml file正确无误。

答案 2 :(得分:0)

在代码顶部试试

ActiveRecord::Base.establish_connection(
  :adapter => "mysql",
  :host => "localhost",
  :username => "<your database username>",
  :password => "<your database password>",
  :database => "<your database name>"
)

以上代码应建立与数据库的ActiveRecord数据库连接。您可以在此处查看手册http://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-c-establish_connection。祝你好运!