假设:
作品表
Name
created_at
Size
我想列出所有作品,最后总结所有尺寸值,但在一个条件下。 created_at必须是< 1年前。
我知道
@works.sum(&:size)
有效,但不会过滤掉'created_at'部分。
然后我到了这里 @ works.sum(&:size,:conditions => ['created_at>?',1.year.ago])
但是继续得到关于期望a的编译错误而不是a,
请帮忙吗?有没有更好的方法来实现这个目标?
答案 0 :(得分:4)
您可以使用范围来保持模型清洁
#controller
class WorksController < ApplicationsController
def index
@works.recent.sum(&:size)
end
end
#model
class Work
scope :recent, ->{ where('created_at > ?', 1.year.ago) }
end
答案 1 :(得分:0)
这对我有用:
@works.where('created_at > ?', 1_year_ago).sum(:size)