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")