null이거나 빈/비어 있지 않은 레코드 만 찾고 싶습니다. 현재 가지고 있습니다.named_scope - 필드가 null도 아니고 빈/빈도가 아닌 항목을 찾음.
named_scope :in_gallery, :conditions => ["gallery IS NOT NULL"]
(갤러리는 문자열 임) 그러나 사용자가 입력 한 다음 제목을 삭제하면이 빈 문자열이 결과에 포함됩니다.
null이거나 빈/비어 있지 않은 레코드 만 찾고 싶습니다. 현재 가지고 있습니다.named_scope - 필드가 null도 아니고 빈/빈도가 아닌 항목을 찾음.
named_scope :in_gallery, :conditions => ["gallery IS NOT NULL"]
(갤러리는 문자열 임) 그러나 사용자가 입력 한 다음 제목을 삭제하면이 빈 문자열이 결과에 포함됩니다.
무엇
named_scope :in_gallery, :conditions => ["gallery IS NOT NULL AND gallery != ''"]
에 대해 ... I 필드는 텍스트가있는 경우에만 항목을 선택할 수 있도록하려면 명확하게?
저는 J의 범위 정의가 옳다고 생각하지만 그 이상의 경우 왜 NULL이 아닌 빈 문자열을 사용하여 "갤러리가 아님"을 의미하는지 궁금합니다. 이 데이터베이스에 대한 모든 삽입 및 업데이트를 제어 할 수 있다면 하나 또는 다른 선택 (NULL은 나에게 자연 스럽다)하고 고집하는 것이 좋습니다. 예를 들어,이 명명 된 범위와 같은 장소에서 코드를 단순화하고 둘 중 하나를 선택하는 것을 잊어 버리면 두 가지 모두를 허용하면 실제로는 짜증나는 버그가 발생할 수 있습니다.
간단한 방법은 갤러리를 빈 문자열로 설정하지 못하도록 유효성 검사를 추가 한 다음 모든 중단 (잘하면 테스트가 있음)을 수정하는 것입니다. API를 공개하고 빈 갤러리에서 이전 버전과의 호환성을 허용해야하는 경우 before_save 후크를 설정하여 빈 문자열을 nil로 변경할 수 있습니다.
null이 아닌 비어 둘 다 다음 커버 :
named_scope :in_gallery, :conditions => ["gallery <> ''"]
또는 레일에서 당신이 할 수있는 3+ :
scope :in_gallery, where("gallery <> ''")