【发布时间】:2015-08-27 15:14:04
【问题描述】:
我们在管理视图中使用 ActiveAdmin,这是当前的索引代码。 Book 模型从单个“books”postgres 表中检索数据:
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
...
有什么想法吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 activerecord rails-activerecord activeadmin