Ruby on Rails - 活动管理员 - 处理自定义方法

时间:2014-03-21 17:38:00

标签: ruby-on-rails activeadmin

使用Rails 4和最新的Active Admin。我正在尝试为我的Submission模型构建一个Active Admin索引页面。简而言之,它是一个竞赛应用程序,其中一个提交有很多分数。在Score模型中,有一个名为:total_score的字段,其中法官输入该条目的分数。

很自然地,为了找到提交的最终分数,我需要平均所有孩子的分数:

# In my Submission model
def calculate_final_score
  self.scores.average(:total_score)
end

然后返回平均数。当然,我想在我的Submission Active Admin索引页面中显示这个数字。我使用这段代码(它是一个表格式的索引页面):

column "Score", sortable: :calculate_final_score do |submission|
  submission.calculate_final_score
end

虽然它显示的值很好,但它不知道如何对此自定义方法进行排序。就像,如果我告诉它按该列降序排序,它将命令它为10.0,6.0,3.75,8.0,9.0等。如何正确排序?

其次,它也不知道如何过滤此自定义方法列。我输入了代码filter :calculate_final_score,但它根本没有在页面上显示该过滤器。这是Active Admin的限制还是有办法使该过滤器正常工作?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

这是以下问题的重复:

然而,这些问题并没有真正回答active_admin中发生的事情,以及为什么这些事情无效。

可以在ActiveAdmin::OrderClause找到原因。

它仅支持模型上的列和关联模型上的列。