Ruby on rails Ruby活动记录到数组。如何修改结果?

Ruby on rails Ruby活动记录到数组。如何修改结果?,ruby-on-rails,rails-activerecord,Ruby On Rails,Rails Activerecord,在我的模型中,我有一个函数,其中结果数组是 ...#<DailyStat subject: "Auditing Theory", topic: "Audit Planning", item_count: 3, correct_item_count: 0> #<DailyStat subject: "Auditing Theory", topic: "Audit Reporting", item_count: 2, correct_item_count: 0> #<D

在我的模型中,我有一个函数,其中结果数组是

...#<DailyStat subject: "Auditing Theory", topic: "Audit Planning", item_count: 3, correct_item_count: 0>
#<DailyStat subject: "Auditing Theory", topic: "Audit Reporting", item_count: 2, correct_item_count: 0>
#<DailyStat subject: "Auditing Theory", topic: "Audit Sampling", item_count: 2, correct_item_count: 2>...

这种方法更好吗,还是应该在执行select语句时进行计算(速度更快?

不需要从SQL获取它。数据库是为了…数据,而不是计算

您可以轻松地在DailyStat模型中定义这样的方法,并在视图中或任何需要时调用它

class DailyStat < ActiveRecord::Base
  def accuracy
    return 0 if item_count == 0
    correct_item_count/item_count
  end
end

sql查询中的计算速度将相对较快。
你可以这样做

select("subject, topic, sum(correct_item_count) as correct_item_count, sum(item_count) as item_count, ((sum(item_count)/sum(correct_item_count))*100) as accuracy_percentage")

是的,这听起来更像是一种Ruby/Rails方式。我刚刚添加了一个格式化的条款,一切都很好。谢谢。:)
stat = DailyStat.last
state.accuracy 
# There is no SQL involved 
select("subject, topic, sum(correct_item_count) as correct_item_count, sum(item_count) as item_count, ((sum(item_count)/sum(correct_item_count))*100) as accuracy_percentage")