选择过期但未过期的值MySQL,Rails 5

时间:2018-01-06 16:27:15

标签: mysql ruby-on-rails activerecord

我有一个Ruby on Rails 5应用程序,MySQL作为数据库。我的表格products和表格subscriptions包含标准的Rails 5 datetime列 - created_at'。

模型Product has_many :subscriptions和模型Subscription belongs_to :product

我想选择之前为示例1天创建的产品的所有订阅以及以这种方式创建的所有产品(例如过去24小时),我可以像这样使用它们 - {{1} }和product.expired_subscriptions

1 个答案:

答案 0 :(得分:1)

尝试以下

#=> subscription.rb
scope :expired_subscriptions, -> { where("created_at >= ?", 24.hours.ago) }
scope :active_subscriptions, -> { where(created_at: (Time.now - 24 .hours)..Time.now) }

然后

@product = Product.find(1) #=> find product by ID
@product.subscriptions.expired_subscriptions #=> all  subscriptions > 24 hours
#=============#
@product = Product.find(1) #=> find product by ID
@product.subscriptions.active_subscriptions #=> all subscriptions within 24 hours

希望能提供帮助