Смотреть все таблицы, все записи из консоли? - PullRequest
6 голосов
/ 31 декабря 2010

Как я могу отобразить текущее количество записей из всех моих таблиц базы данных в одной команде, используя консоль?Спасибо!

Ответы [ 4 ]

16 голосов
/ 01 января 2011

Это будет сделано, если вы «прикоснулись» ко всем своим классам, но только для реальных моделей:

ActiveRecord::Base.subclasses.map { |c| "#{c.name} => #{c.count}" }

Если вы действительно хотите, чтобы все таблицы, включая таблицы объединения, не сопоставлялись с моделями:

ActiveRecord::Base.connection.tables.map { |t| "#{t} => " + ActiveRecord::Base.connection.execute("select count(*) from #{t}").fetch_row.first}
16 голосов
/ 21 января 2014
ActiveRecord::Base.connection.tables

это вернет массив таблиц, которые у вас есть, если вы сочтете это полезным.

1 голос
/ 01 января 2011

Это может быть немного дольше, чем вы надеялись, но надеюсь, это поможет; -)

Dir.glob('app/models/*.rb').each {|file| puts eval(File.basename(file, ".rb").classify + '.count').to_s + " #{File.basename(file, ".rb").classify.pluralize}"}

Возможно, для этого лучше создать задачу для граблей.

0 голосов
/ 20 сентября 2017

Я пытался сделать это, и я придумал свой собственный способ сделать это.

Мне нравится инкапсулировать, если в модель под названием Maintenance , которая не является активной моделью записи

моя модель выглядит как

class Maintenance
  def self.show_all_tables_count
    list_table_with_count = []
    ActiveRecord::Base.connection.tables.each do |table|
      unless ['ar_internal_metadata', 'schema_migrations'].include?(table)
        list_table_with_count << [name: table, count: table.singularize.camelize.constantize.count]
      end
    end
    list_table_with_count
  end
end

Надеюсьчто это помогает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...