Ruby on rails 3 在条件下求和列值

Ruby on rails 3 在条件下求和列值,ruby-on-rails-3,Ruby On Rails 3,假设: 工作台 Name created_at Size 我想列出所有作品,最后总结所有尺寸值,但有一个条件。创建时间必须小于1年 我知道 @works.sum(&:size) 工作正常,但不会过滤掉“created_at”部分 然后我就说到这里 @works.sum(&:size,:conditions=>['created_at>?',1.年前]) 但是不断出现编译错误,期望a)而不是a 请帮忙?有没有更好的方法来实现这一点?您可以使用范围来保持模型清洁 #controller

假设:

工作台

Name
created_at
Size
我想列出所有作品,最后总结所有尺寸值,但有一个条件。创建时间必须小于1年

我知道

@works.sum(&:size)
工作正常,但不会过滤掉“created_at”部分

然后我就说到这里 @works.sum(&:size,:conditions=>['created_at>?',1.年前])

但是不断出现编译错误,期望a)而不是a


请帮忙?有没有更好的方法来实现这一点?

您可以使用范围来保持模型清洁

#controller
class WorksController < ApplicationsController

  def index
    @works.recent.sum(&:size)
  end
end

#model
class Work
 scope :recent, ->{ where('created_at > ?', 1.year.ago) }
end
#控制器
类WorksController<应用程序控制器
def索引
@工程.近期.总额(&:规模)
结束
结束
#模型
课堂作业
范围:最近,->{where('created_at>?',1年前)}
结束

您可以使用范围保持模型清洁

#controller
class WorksController < ApplicationsController

  def index
    @works.recent.sum(&:size)
  end
end

#model
class Work
 scope :recent, ->{ where('created_at > ?', 1.year.ago) }
end
#控制器
类WorksController<应用程序控制器
def索引
@工程.近期.总额(&:规模)
结束
结束
#模型
课堂作业
范围:最近,->{where('created_at>?',1年前)}
结束
这对我很有用:

@works.where('created_at > ?', 1_year_ago).sum(:size)
这对我很有用:

@works.where('created_at > ?', 1_year_ago).sum(:size)

@乔尔,这是你需要的吗?乔尔,这是你需要的吗?