Мы используем ActiveAdmin для нашего административного представления, вот текущий индексный код. Модель Book извлекает данные из одной таблицы «книги» Postgres:Сортировка настраиваемого столбца в представлении индекса ActiveAdmin: объединение, группировка и счет ад
class Book < ActiveRecord::Base
has_many :stories, class_name: "BookStory"
...
ActiveAdmin.register Book do
index do
column :id
column :title
column :subtitle
column :isbn_13
default_actions
end
...
Я хотел бы добавить столбец «истории», на наш взгляд индекса. «История» - это действие от пользователя, связанного с книгой. Истории хранятся в таблице «book_stories».
class BookStory < ActiveRecord::Base
belongs_to :user,
belongs_to :book,
С SQL-точки зрения, именно так я хотел бы реализовать запрос в ActiveAdmin. Этот запрос дает мне желаемый результат в pgadmin3:
SELECT books.id,books.title,books.subtitle,books.isbn_13,COUNT(book_stories.book_id) AS count
FROM books
INNER JOIN book_stories ON books.id = book_stories.book_id
GROUP BY books.id
ORDER BY count DESC
LIMIT 30;
И я действительно не знаю, как реализовать Сортируемую колонку «Истории» в наш взгляд администратора. По-видимому, я могу сортировать книгу, как по их рассказам. Мне удалось показать отсчитывать истории за книгу с этим кодом, но столбец не сортируется:
ActiveAdmin.register Book do
index do
column :id
column :title
column :subtitle
column :isbn_13
column :stories do |book|
BookStory.joins(:book).group.where("books.id = #{book.id}").count
default_actions
end
...
Любые идеи?
Хорошо, до сих пор я обновил свою базу данных, используя грабли БД: мигрировать задачу класса AddBookStoriesColumn 0 конец КОНЕЦ конец Теперь столбец: book_stories_count здесь, но заполняются нулями. Все еще смотря, как заполнить столбец соответствующими значениями. Спасибо: –
Thomas
Вам нужно сделать что-то вроде этого 'Post.find_each {| post | Post.reset_counters (post.id,: comments)} ' –