2013-01-11 3 views
0

시작 날짜와 종료 날짜가있는 모델이 있습니다. 중지 날짜가 비어 있거나 nil이면 모델이 활성 상태입니다.레일 : 빈칸을 사용 하시겠습니까? in where 절

모든 활성 인스턴스에 대한 범위를 추가하려고합니다.

공백을 사용할 수 있습니까? 어떻게 where 절에서? Where 절에서 둘 다 확인하는 유일한 방법은 무엇입니까? 이것을 할 또 다른 방법이 있습니까? 나는이 작업을 수행 할 수있는 청소기 방법이 바라고 있어요

scope :active, where('stop_date is ? or stop_date is ""', nil) 

을 :

여기에 내가 지금 무슨이다.

답변

1

레일 3.1.0 scopeis deprecated 이후에는 클래스 메서드를 사용하는 것이 좋습니다.

def self.active 
    where("stop_date IS NULL OR stop_date <> ''") 
end 

이 IMO 조금 더 좋은,하지만 당신은 확인할 필요가없는 경우 : 열이 실제 상황에서뿐만 아니라 NULLNULL 빈 카운트를 할 수있는 경우 다음과 같은 두 인스턴스를 확인해야합니다 NULL 상태 (예 : null => false 인 경우) 그러면 그냥 :

def self.active 
    where("stop_date <> ''") 
end 

가 작동합니다.