所以,会员有很多订阅。如果最后一个订阅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,但不知道如何将这种逻辑应用于类范围。
答案 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')