我正在创建一个卖家可以列出待售商品的市场应用。我想设置一个到期日,因此超过30天的列表不会在网站上显示。
我在网上找到了一些类似的例子,但无法让这个查询起作用。
@listings = Listing.where('created_at <= ?', Date.created_at + 30.day)
答案 0 :(得分:2)
您想要查询created_at
时间为>=
当前日期(Date.current
) - 30天(30.day
)的项目。所以查询应该只是:
@listings = Listing.where('created_at >= ?', Date.current - 30.day)
您也可以将Date.current
替换为Time.now
或DateTime.now
。
更新:作为评论中提及的 user3334690 ,建议您将此作为模型方法,因为它应该是模型层:
# app/models/listing.rb
def self.not_expired
where('created_at >= ?', Date.current - 30.day)
end
# now in controllers you can do something like
@listings = Listing.not_expired