Сопоставить таблицу с соответствующим ActiveRecord :: Model - PullRequest
0 голосов
/ 10 мая 2019

Я хочу пройтись по всем таблицам базы данных и просмотреть каждую запись в моей базе данных.Сейчас я достигаю этого примерно так:

ActiveRecord::Base.connection.tables.each do |table|

  table.classify.constantize.find_each do |record|
  end

  rescue NameError
end

Проблема в том, что он тянет таблицу так: ar_internal_metadata и schema_migrations, у которых нет соответствующих моделей, поэтому мой table.classify.constantizeтерпит неудачу с NameError, поэтому я спасаю это внизу.

Я бы не хотел спасать эту ошибку.Итак, есть ли способ сопоставить таблицу с соответствующим ActiveRecord :: Model?

1 Ответ

1 голос
/ 10 мая 2019

Просто игнорирование всех несуществующих моделей может привести к ошибкам. Вместо этого я предлагаю игнорировать только те таблицы, которые, как вы ожидаете, не имеют соответствующей модели.

RAILS_META_TABLES = %w[ar_internal_metadata schema_migrations]

ActiveRecord::Base.connection.tables.each do |table|
  next if RAILS_META_TABLES.include?(table)

  table.classify.constantize.find_each do |record|
    # ...
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...