Возможно ли высушить эту миграцию? - PullRequest
3 голосов
/ 03 февраля 2012

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

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

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

Спасибо

Ответы [ 2 ]

5 голосов
/ 03 февраля 2012

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

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

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

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

Не могли бы вы попробовать это.

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

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

...