Приложение My Ruby_2 + Rails_4 + Postgres_9.2 содержит десятки моделей. Недавно CR потребовал добавить два новых поля ко всем моим моделям. Я знаю, что я могу кропотливо создать миграцию, которая будет индивидуально «добавить_колонку» к каждой из моих моделей. Есть ли более простой способ сделать то же самое, где мне не нужно будет это делать?Rails 4: Как добавить столбец ко всем моделям в приложении?
1
A
ответ
2
def self.up
ActiveRecord::Base.connection.tables.each do |table|
next if table == "schema_migrations"
add_column table, :column_name, :column_type
end
end
EDIT: (получение имени таблицы из моделей)
def self.up
Rails.application.eager_load!
ActiveRecord::Base.descendants.each do |model|
add_column model.table_name, :column_name, :column_type
end
end
0
Добавьте миграции и петлю через все таблицы:
def self.up
[:table_name1, :table_name2, :table_name3, ...].each do |table_name|
add_column table_name, :column1, :string
add_column table_name, :column2, :string
end
end
1
def tables
(ActiveRecord::Base.connection.execute
"SELECT table_name FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = '#{ActiveRecord::Base.connection.current_database}'
AND table_type = 'BASE TABLE'").to_a.flatten
end
def self.up
tables.each do |table|
add_column table, :a_column1, :a_type
add_column table, :a_column2, :a_type
end
end
Смежные вопросы
- 1. Применить PaperTrail ко всем моделям
- 2. Mongoose - добавить глобальный метод ко всем моделям
- 3. Привязать поведение ко всем моделям
- 4. Как добавить метод экземпляра ко всем моделям в sails.js?
- 5. Как добавить trailing_slash ко всем URL-адресам без Rails 4?
- 6. Xamarin Forms доступ ко всем моделям просмотра
- 7. Лучший способ добавить метод ко всем красноречивым моделям
- 8. Как привязать данные модели ко всем дочерним моделям в Laravel
- 9. Rails: добавить поле ко всем формам
- 10. Как добавить навигационный ящик ко всем действиям в приложении?
- 11. Добавить столбец ко всем MySQL Выбрать запросы за один выстрел
- 12. CSS Укладка не применяется ко всем сообщениям в приложении Rails
- 13. Как добавить строку ко всем сообщениям журнала
- 14. Как добавить событие onchange ко всем select2s?
- 15. Как добавить AdMob GADBannerView ко всем представлениям
- 16. Добавить цифру ко всем значениям в столбце
- 17. Добавить комментарий к моделям пользователей и публикаций Rails 4
- 18. Rails 4: Доступ ко всем CRUD из index.html.erb
- 19. XNA - 3D-игра - Примените свет ко всем моделям
- 20. Добавить границу ко всем меткам в виде
- 21. Rails 4: Добавить столбец к существующему строительству
- 22. Как добавить зависящее от CakePHP поведение ко всем моделям, AppModel - без создания цикла?
- 23. Удалить reationship от многих ко многим моделям в Laravel 4
- 24. Добавить обертку ко всем Devise Views
- 25. Как добавить метод ко всем шаблонам django?
- 26. Как добавить устройство ко всем контейнерам докеров
- 27. Как добавить заголовок ко всем запросам Джерси
- 28. Android - как добавить заголовок ко всем страницам?
- 29. Rails лучший способ добавить параметр сортировки ко всем ссылкам?
- 30. Как добавить число ко всем «h2 тегам»
Привет Vimsha, ваш код работает отлично, но добавляет столбец ко всем таблицам в БД, включая таблицы отношений. Я хочу добавить их только в таблицы моих моделей (те, которые расширяют ActiveRecord :: Base). Можете ли вы улучшить это. Чтобы снова напомнить вам, я использую Rails 4. Спасибо! – user163861
@ user163861: Изменен мой ответ тем, что вы просите – usha