找到已取消订阅的成员

时间:2012-08-22 23:05:47

标签: mysql ruby-on-rails activerecord arel

所以,会员有很多订阅。如果最后一个订阅canceled_at不是nil,则会取消该成员。但我似乎无法使查询正常工作,找到目前已取消订阅的所有成员。

我在成员模型中这样做

  scope :canceled, includes(:subscriptions).
    where('subscriptions.canceled_at IS NOT NULL')

但它会返回之前已取消订阅的用户。我需要使用限制或类似的东西,我将关系定义为

has_many :subscriptions, :order => "subscriptions.created_at DESC", :dependent => :destroy

所以我可以直接使用.first,但不知道如何将这种逻辑应用于类范围。

1 个答案:

答案 0 :(得分:0)

如何添加其他关联

 Class Member < ActiveRecord::Base
   has_one :last_subscription, :class_name => "Subscription", :foreign_key => "member_id", :order => "created_at desc"

然后尝试

 scope :canceled, includes(:last_subscription).where('subscriptions.canceled_at IS NOT NULL')