Rails - изменил имя таблицы, теперь тесты не будут запускаться - PullRequest
0 голосов
/ 27 февраля 2012

Используя Rails 3, я изменил имя таблицы в модели следующим образом:

# app/models/product.rb
class Product < ActiveRecord::Base
  set_table_name "items"
end

Но когда я пытаюсь настроить тесты, я получаю следующую ошибку:

Started
E
Finished in 0.027396 seconds.

  1) Error:
test_the_truth(CustomerTest):
ActiveRecord::StatementInvalid: Mysql2::Error: Table 'project2_test.products' doesn't exist: DELETE FROM `products`


1 tests, 0 assertions, 0 failures, 1 errors

Есть идеи, как я могу сообщить о продуктах?

Ответы [ 2 ]

1 голос
/ 27 февраля 2012

OK нашел ответ здесь:

http://www.missiondata.com/blog/systems-integration/80/rails-fixtures-with-models-using-set_table_name/

Пришлось изменить имя yml-файла Fixture с Products на Items.

0 голосов
/ 27 февраля 2012

Вместо того, чтобы изменять класс напрямую, вы должны создать миграцию . Это позволит Rails плавно изменять базу данных, и все остальные, работающие над проектом, могут изменять свою базу данных таким же образом.

Напишите change метод, который использует rename_table.

class RenameProductsToItems < ActiveRecord::Migration
  def change
    rename_table :items, :products :string
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...