Rails:ActiveAdmin按索引排序,然后按自定义方法值排序

时间:2017-01-12 05:14:30

标签: ruby-on-rails sorting activerecord activeadmin

所以,我有以下

Dialogue.rb
 belongs_to Chapter
 # Get the total number of dialogues in a chapter, then see what number we are
 def order_in_chapter
   chapter.dialogues.index(self) + 1
 end

Chapter.rb
 has_many Stories

章节也有一个"订单号"所以我们知道以什么顺序来展示章节。

问题在于,在活动管理员上,业务要求是按章节排序,然后是对话号码。按多个索引排序并不困难,但是按索引排序然后按方法的返回值对返回的关联进行排序似乎不可能?

供参考:

ActiveAdmin.register Dialogue do
  controller do
    def scoped_collection
      super.includes :chapter, :character
    end
  end
  index do
    column :chapter, sortable: "chapters.order_num"
  end

这正确地对章节进行了分类(第1章,然后是2,然后是3等),但当我希望通过dialog.order_in_chapter方法返回时,这些章节中的对话会以混乱的顺序返回。

有办法做到这一点吗?

我需要的伪代码就像:

StoryVoice.order(chapter: :asc).then_by(order_in_chapter: :asc)

0 个答案:

没有答案
相关问题