Где приложение rails (3) определяет, что должно происходить в activesupport-3.0.0.rc / lib / active_support / testing / setup_and_teardown.rb? - PullRequest
0 голосов
/ 25 августа 2010

Я сгенерировал файл модели, но затем решил позволить ему наследовать одну таблицу от другой модели. Мне не нужно было выполнять миграцию, потому что все столбцы уже были там.

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

Итак, у меня есть Product

test_should_update_article(ArticlesControllerTest):
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such table: products: DELETE FROM "products" WHERE 1=1
    AR/active_record/connection_adapters/abstract_adapter.rb:202:in `rescue in log'
    AR/active_record/connection_adapters/abstract_adapter.rb:194:in `log'
    AR/active_record/connection_adapters/sqlite_adapter.rb:135:in `execute'
    AR/active_record/connection_adapters/abstract/database_statements.rb:269:in `update_sql'
    AR/active_record/connection_adapters/sqlite_adapter.rb:139:in `update_sql'
    AR/active_record/connection_adapters/abstract/database_statements.rb:274:in `delete_sql'
    AR/active_record/connection_adapters/sqlite_adapter.rb:145:in `delete_sql'
    AR/active_record/connection_adapters/abstract/database_statements.rb:54:in `delete'
    AR/active_record/connection_adapters/abstract/query_cache.rb:16:in `delete'
    AR/active_record/fixtures.rb:551:in `delete_existing_fixtures'
    AR/active_record/fixtures.rb:513:in `block (4 levels) in create_fixtures'
    AR/active_record/fixtures.rb:513:in `each'
    AR/active_record/fixtures.rb:513:in `block (3 levels) in create_fixtures'
    AR/active_record/connection_adapters/abstract/database_statements.rb:139:in `transaction'
    AR/active_record/fixtures.rb:512:in `block (2 levels) in create_fixtures'
    AR/active_record/connection_adapters/abstract_adapter.rb:104:in `disable_referential_integrity'
    AR/active_record/fixtures.rb:503:in `block in create_fixtures'
    AS/active_support/benchmarkable.rb:55:in `silence'
    AR/active_record/fixtures.rb:502:in `create_fixtures'
    AR/active_record/fixtures.rb:961:in `load_fixtures'
    AR/active_record/fixtures.rb:926:in `setup_fixtures'
    AS/active_support/callbacks.rb:419:in `_run_setup_callbacks'
    AS/active_support/testing/setup_and_teardown.rb:34:in `run'

AR - сокращение для /Users/janlimpens/.rvm/AS/ruby-1.9.2-rc2@rails3/AS/activerecord-3.0.0.rc/lib AS для /Users/janlimpens/.rvm/AS/ruby-1.9.2-rc2@rails3/AS/activesupport-3.0.0.rc/lib/

Интересно, что я мог сделать ...

1 Ответ

0 голосов
/ 25 августа 2010

Предполагается, что вы используете наследование одной таблицы, поскольку модель продукта наследуется от модели товара.

Чтобы это работало, вам нужен столбец «type» в таблице Article, который будет заполнен «Product». или любой другой класс, который наследует модель Article.

Добавьте это, и SQL-запрос будет выглядеть как

выберите * из статей, где article.type = "Product"

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