2012-08-22 1 views
0

회원은 구독이 많습니다. 마지막 subscription cancelled가 nil이 아니면 멤버가 취소됩니다. 하지만 쿼리가 제대로 작동하지 않아 현재 구독이 취소 된 모든 회원을 찾을 수 없습니다.구독이 취소 된 회원 찾기

나는 회원 모델

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

이 일을 해요하지만 이전에 너무 구독을 취소 한 사용자에게 반환합니다. 나는 그런 클래스 범위에 그 논리를 적용하는 방법을 잘 내가

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

그래서 난 그냥 좁은 방을 offf 작업 할 수있는 관계가 정의되어, 그와 같은 제한 또는 뭔가를 사용해야하지만. 다른 협회

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

을 추가하는 방법에 대한 그런 시도 방법

+0

아직도 완전히 분명, 당신은 누구의 구독 현재 취소 된 사용자를 찾으려면? 현재 취소 된 구독과 이전 구독의 차이점은 무엇입니까? 그들의 데이트 범위는 무엇입니까? –

+0

최근 구독 기록 상태의 사용자가 취소되었습니다. 이는 cancelled가 null이거나 날짜 시간 obj –

답변

0

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

으로 표시되며 '구성원'을 선택하게됩니다. * FROM'members' ORDER BY members.last_name ASC, members.first_name ASC LIMIT 1 그래서 1 개의 멤버 만 반환합니다. –

+0

Member.includes (: last_subscripton) .all로 호출 해보십시오. 쿼리가 실행되지 않아 이해가 안되는 이유는 무엇입니까? –

+0

전화를 걸지 않았는지 확인한 다음 실행했습니다. Member.canceled.all.each do | m |; p m.full_name mscriptions.first.canceled를 제외하고?; 끝내고 나는 이론적으로는 안되는 몇 개의 멤버를 반환했다. –