2010-07-01 3 views

답변

3

무엇

named_scope :in_gallery, :conditions => ["gallery IS NOT NULL AND gallery != ''"] 

에 대해 ... I 필드는 텍스트가있는 경우에만 항목을 선택할 수 있도록하려면 명확하게?

2

저는 J의 범위 정의가 옳다고 생각하지만 그 이상의 경우 왜 NULL이 아닌 빈 문자열을 사용하여 "갤러리가 아님"을 의미하는지 궁금합니다. 이 데이터베이스에 대한 모든 삽입 및 업데이트를 제어 할 수 있다면 하나 또는 다른 선택 (NULL은 나에게 자연 스럽다)하고 고집하는 것이 좋습니다. 예를 들어,이 명명 된 범위와 같은 장소에서 코드를 단순화하고 둘 중 하나를 선택하는 것을 잊어 버리면 두 가지 모두를 허용하면 실제로는 짜증나는 버그가 발생할 수 있습니다.

간단한 방법은 갤러리를 빈 문자열로 설정하지 못하도록 유효성 검사를 추가 한 다음 모든 중단 (잘하면 테스트가 있음)을 수정하는 것입니다. API를 공개하고 빈 갤러리에서 이전 버전과의 호환성을 허용해야하는 경우 before_save 후크를 설정하여 빈 문자열을 nil로 변경할 수 있습니다.

0

null이 아닌 비어 둘 다 다음 커버 :

named_scope :in_gallery, :conditions => ["gallery <> ''"] 

또는 레일에서 당신이 할 수있는 3+ :

scope :in_gallery, where("gallery <> ''")