2011-03-08 61 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是正確的。

相關問題