Нужно ли соединение для использования ActiveRecordObject.new? - PullRequest
0 голосов
/ 08 марта 2011

Можете ли вы создать и инициализировать объект 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 ]

2 голосов
/ 08 марта 2011

Краткий ответ: Да, вам нужно соединение!

Вы не можете (обычно) использовать ActiveRecord, если нет соединения.

Набор атрибутов на объекте определяется столбцами таблицы. Это означает, что вы не можете использовать объект, если у вас нет подключения.

В любом случае, что произойдет после вызова exercise.save, если нет соединения?

Так что, если вам нужна только проверка, вы можете повторно использовать ActiveSupport :: Validation для временного класса.

0 голосов
/ 08 марта 2011

Попробуйте это вверху вашего кода

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. Удачи!

0 голосов
/ 08 марта 2011

Это означает, что Rails не может подключиться к вашей базе данных.Убедитесь, что сервер базы данных включен (если применимо), и что ваш config/database.yml файл правильный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...