2012-02-03 4 views
3

У меня есть таблица, папки, которые я хочу некоторые другие таблицы в качестве ссылки, пока мой сценарий миграции выглядит следующим образом:Можно ли сушить эту миграцию?

create_table :folders do |t| 
    t.timestamps 
end 

.... 

change_table table1 do |t| 
    t.references :folders 
end 
change_table table2 do |t| 
    t.references :folders 
end 
change_table table3 do |t| 
    t.references :folders 
end 
change_table table4 do |t| 
    t.references :folders 
end 

Поскольку я делаю по существу то же самое, к каждой таблице, есть более лаконичный и удобный способ написать это?

Благодаря

ответ

5

Попробуйте сделать это:

[table1, table2, table3, table4].each do |tbl| 
    change_table tbl { |t| t.references :folders } 
end 

Я надеюсь, что вы не называйте таблицы с рисунком table{#n} и дать им хорошие имена в Вашем коде :)

+0

Да, эти имена были просто для абстрактного примера :) – Chris

0

Могли бы вы, пожалуйста, попробуй это.

(1..4).each do |num| 
     change_table "table#{num}" do |t| 
     t.references :folders 
     end 
    end 

Надеюсь, это поможет.

+0

Вам нужно было бы оценить эту строку, иначе просто останется строка; это не то, что указывает на объект таблицы #. – omninonsense

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