我想做这个查询:
sector.posts.count(:conditions => {:created_at.month => 1..3})
但是,它返回:
NoMethodError: :created_at:Symbol 的未定义方法“月”
但如果我post.created_at.month
在控制台中这样做,它会返回月份的整数值。我将如何完成我要进行的查询?
我想做这个查询:
sector.posts.count(:conditions => {:created_at.month => 1..3})
但是,它返回:
NoMethodError: :created_at:Symbol 的未定义方法“月”
但如果我post.created_at.month
在控制台中这样做,它会返回月份的整数值。我将如何完成我要进行的查询?
在这种情况下,您可以使用 count 方法。更多关于 sql 条件的信息。
你所做的就是这样调用 count 方法:
sector.posts.count(conditions: 'MONTH(created_at) in (1,2,3)')
或更好的方法:
sector.posts.where('MONTH(created_at) in (1,2,3)').count
您正在尝试在查询中调用符号 :created_at 的方法。在您的控制台示例中,您正在针对 ActiveRecord 对象调用该方法。
如果您尝试从某个日期范围内获取结果,请使用 BETWEEN 查询(至少在Mysql或Postresql上)并设置该范围的开始日期和结束日期。
sector.posts.where(["'posts.created_at' BETWEEN ? AND ?", Date.new(2013,1,1), Date.new(2013,3,31)])
如果您需要动态查询,您还可以使用 begin_of 日期方法,例如begin_of_quarter 。他们非常强大。