0

所以,会员有很多订阅。如果最后一个订阅 cancelled_at 不为零,则取消成员。但我似乎无法让查询正常工作,找到所有目前取消订阅的成员。

我在成员模型中这样做

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

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

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

所以我可以解决.first,但不知道如何将该逻辑应用于类范围。

4

1 回答 1

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')
于 2012-08-23T00:14:21.430 回答