2013-10-02 3 views
1

У меня есть базовый класс для типа миграции, которая происходит часто:Rails миграция наследование не работает

class AddEventsBaseMigration < ActiveRecord::Migration 
    #ITEMS = [] 

    def up 
    #add the items 
    end 

    def down 
    #remove the items that were added. 
    end 
end 

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

class AddEvents0930 < AddEventsBaseMigration 
    ITEMS = [ ... ] 
end 

Когда я пытаюсь запустить эту миграцию, я получаю эту ошибку:

rake aborted! 
uninitialized constant AddEventsBaseMigration 
C:/.../Source/db/migrate/20131002152826_add_events_0930.rb:1 
c:0:in `migrate' 
Tasks: TOP => db:migrate:up 

Что я здесь делаю неправильно?

Ruby: 1.8.7 (2013-06-27 374 номера патчей) [i386-mingw32]

Rails: 3.2.13

Edit: Я забыл упомянуть, что я «пробовал:

require "add_events_base_migration" 
require "./add_events_base_migration" 
require "/db/migrate/add_events_base_migration" 

И я получаю ошибку: no such file to load -- /db/migrate/add_events_base_migration

+1

может быть, вам нужно явно добавить 'requi re './add_events_base_migration'' или 'require'/db/migrations/add_events_base_migration'' в начале файла? – Baldrick

+0

Я должен был упомянуть, что я пробовал это. –

ответ

0

Вы должны попробовать:

require_relative "add_events_base_migration" 

Например, если у вас есть единичные тестовые классы в каталоге «тест», и данные для них по тесту «тест/данные» каталог, то вы можете использовать строку это в тесте:

require_relative "data/customer_data_1" 

Если вы на Ruby 1.8, вам может понадобиться использовать эту библиотеку:

https://github.com/steveklabnik/require_relative

+0

Я просто попробовал, и я получаю 'undefined method 'require_relative' для main: Object' ...? –

+0

Обновлен мой ответ. –

+0

Зачем мне это нужно, чтобы наследовать от другого класса? Разве это не встроено в рубин/рельсы? –

Смежные вопросы