2014-11-23 3 views
1

В панели администратора моего приложения я хотел бы отобразить все таблицы в базе данных.Получить все таблицы из базы данных в контроллере Rails

Как я это делаю в данный момент получает все записи для каждой таблицы, такие как:

@users = User.all 
@pages = Page.all 
etc. 

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

<thead> 
    <tr> 
    <th>Id</th> 
    <th>Name</th> 
    <th>Email</th> 
    </tr> 
</thead> 

Я Acces все записи:

<% @users.each do |user| %> 
     <tr> 
      <td><%= user.id %></td> 
etc.. 

То, что я хотел бы сделать, чтобы получить хэш от всех т ляющим как это:

@DB is { table_name_1: table_object_1, table_name_2: table_object_2} 

Тогда на мой взгляд, я мог бы сделать что-то вроде

<% @DB.each do |table| %> 
    <table> 
     <% @table.each do |record| %> 
     <table row> 
     <%end%> 
    </table> 
<%end%> 

мне удалось получить имена таблиц с помощью этого:

@DB = Hash.new 
    ActiveRecord::Base.connection.tables.each do |table| 
     next if table.match(/\Aschema_migrations\Z/) 
     next if table.match(/\Aauthentications\Z/) 
     klass = table.singularize.camelize.constantize  
     @DB[klass.name] = klass 
    end 
    end 

здесь: How to list of all the tables defined for the database when using active record?

Однако я получаю сообщение об ошибке @DB["User"] не имеет способа each

или более точно ..: undefined method each' for # < Class:0x4ab7af0>

+1

Вы можете использовать '' rails_admin', active_admin' или моя простая библиотека 'bareback' для этой задачи, проверьте https://github.com/nielsbuus/bareback –

ответ

1

Nevermind .. Кажется, я пропускал .all

Правильный вызов является: @DB["User"].all.each

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