所以,我有以下
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)