У меня есть много мест в моем коде, которые на самом деле вызывают поиск активных записей.Например, в движке блога у меня может быть таблица tags
, которая соответствует модели activerecord Tag
.Предположим, по какой-то причине, что я хочу, чтобы произошла особая логика, если пост создается с тегом где tag.description == 'humor'
.Тогда у меня может быть метод в модели:
class Tag < ActiveRecord::Base
def self.humor_tag
find_by_description('humor')
end
end
Независимо от того, плохой это дизайн или нет, это вызывает у меня безумные проблемы при использовании команд rake для построения базы данных.Скажем, позже я закончил свою разработку и хочу развернуть в производство.Поэтому я беру дампированный файл schema.rb, а затем хочу загрузить новую структуру базы данных из этого schema.rb или, в качестве альтернативы, просто запустить мои миграции для создания производственной базы данных.
RAILS_ENV=production rake db:schema:load
Проблема в том, что в производственной среде команда rake загружает каждую модель.Когда он пытается загрузить метод Tag#humor_tag
, он выдает ошибку, которая останавливает процесс:
rake aborted!
Table 'production_database.tags' doesn't exist
Ну, конечно, он не существует, он еще не был создан!Я гуглил, и люди, похоже, решают эту проблему, либо клонируя базу данных в SQL, либо перемещаясь по своему коду, чтобы они могли запустить задачу rake.
Что ты должен делать?Похоже, что где-то может быть какая-то конфигурация, чтобы вы могли сказать rake о том, что нужно игнорировать обращения к таблицам базы данных перед созданием каких-либо таблиц.