Ruby on rails 3 - 如何在 ActiveRecord 中找到完成百分比



我似乎找不到一种优雅的方式来做到这一点。

但是,假设我的模型Projects有很多Tasks

每个task都有一个用于complete的布尔字段。

因此,如果我有 10 个tasks,其中 4 个是"完整的",而 6 个不是,那么我只完成了 40%。

有没有一种巧妙的方法可以在scope中做到这一点,以便SQL是精简的?

我已经有两个范围,例如:

  scope :complete, lambda {
    where("tasks.complete = true")
  }
  scope :not_complete, lambda {
    where("tasks.complete = false")
  }

感谢您的任何提示。

我认为

,既然您希望从中获得最终值,因此模型方法是最好的方法。(作用域应返回关系以支持链接)您可以使用这些范围返回完成百分比,如下所示:

def percent_complete
  not_complete.size.to_f / complete.size.to_f
end

或者,如果你的模型中需要big_decimal和big_decimail/util,你可以使用to_d来获得小数除法。那么在您看来,您所要做的就是@project.%_完成

相关内容

  • 没有找到相关文章

最新更新