2010-03-29 4 views
3

사용자 (class User < ActiveRecord::Base)라는 테이블과 클라이언트 (class Client < User)의 서브 클래스/STI가 있습니다.Rails 단일 테이블 상속/하위 클래스에서 부모 찾기 조건

"필터링"클라이언트는 예상대로 작동합니다. 즉, Client.find (: all)는 모든 클라이언트를 찾습니다.

그러나 사용자의 경우 클라이언트가 아닌 사용자 (유형이 null이거나 비어있는 사용자) 만 찾으려면 결과를 필터링해야합니다.

내 인덱스 컨트롤러에서 다음을 시도했지만 유형에 관계없이 유형에 관계없이 모든 사용자를 반환합니다.

User.find(:all, :conditions => { :type => nil }, :order => 'name') 

이 조건을 얻는 방법에 대한 단서가 있습니까?

감사합니다.

답변

0

좋아, 알아 냈어!

앱이 기본 컨트롤러 메소드 (resource_controller와 유사)에 lib를 사용하고 사용자 컨트롤러에서 인덱스 메소드를 잘못 덮어 쓰고있었습니다.

도움을 주심 Achim !!

1

'type'속성이 어떻게 채워지는지 알 수 없습니다. 그러나 type이 데이터베이스 열이라면 적절한 SQL 표현식으로 필터링 할 수 있습니다 :

User.find(:all, :conditions => [ " type=null or type='' "]) 

또는 "class"함수를 의미합니까? "type"은 내가 아는 한 더 이상 사용되지 않습니다. IRB 상태 : 경고 : Object # 유형은 사용되지 않습니다. Object # class

+0

시도했지만 여전히 어떤 이유로 필터를 필터링하지 않습니다. 나를 미치게하고있어. – slythic