2011-03-08 27 views
0

このようなActiveRecordオブジェクトを作成して初期化できますか?ActiveRecordObject.newを使用するには接続が必要ですか?

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

私はこれをやろうとしていると私は、私はちょうど.saveメソッドを呼び出してオブジェクトを作成し、初期化したい

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' 

を得続けます。私がこれについて間違っていたら、私に知らせてください。

答えて

2

短い回答:はい、接続が必要です。

接続がない限り(一般的に)ActiveRecordを使用することはできません。

オブジェクトの属性セットは、表の列によって決まります。つまり、接続していなければオブジェクトを使用できません。

接続がない場合は、exercise.saveを呼び出した後に何が起こりますか?

したがって、検証が必要な場合は、一時クラスでActiveSupport :: Validationを再利用できます。

+0

+1これまでの唯一の答えは、提示された質問に答えるものです。 :) –

+0

答えをありがとう。私はconnecitonを開いてオブジェクトを正しいテーブルに保存したsave_to_database()メソッドを作成しました。 ARがどの列を持っているかを知るためにテーブルを読む必要があることはわかりませんでした。 –

0

これは、Railsがデータベースに接続できないことを意味します。データベースサーバがオンになっていること(該当する場合)と、config/database.yml fileが正しいことを確認してください。

0

は、上記のコードは、データベースへのActiveRecordのデータベース接続を確立する必要があり、あなたのコードの先頭

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

でこれを試してみてください。そのマニュアルはここで確認できますhttp://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-c-establish_connection。がんばろう!

関連する問題