2010-04-21 2 views

답변

3

시도에서

SQLite3::SQLException: no such column: full_name: SELECT * FROM "actors" WHERE (full_name LIKE '%eli dooley%') 

감사합니다 : 그것은 다음과 같은 오류를 제공으로

named_scope :full_name, lambda { |fn| {:joins => :actor, :conditions => ['first_name LIKE ? OR second_name LIKE ?', "%#{fn}%", "%#{fn}%"]} } 

def self.search(search) 
    if search 
    self.find(:all, :conditions => [ 'full_name LIKE ?', "%#{search}%"]) 
    else 
    find(:all) 
    end 
end 

하지만이 작동하지 않습니다

나는 아래의 코드가있다 this :

def self.search(search) 
    if search 
    self.full_name(search) 
    else 
    find(:all) 
    end 
end 

명명 된 범위는 데이터베이스에 열을 추가하지 않고 매번 입력 조건없이 레코드를 쉽게 얻을 수있는 방법입니다.

1

문에서 :conditions 해시 때문에 작동하지 않습니다

self.find(:all, :conditions => ['full_name LIKE ?', "%#{search}%"]) 

— 데이터베이스 테이블에 full_name라는 이름의 실제 열을 찾고있다. 명명 된 범위 (레일 3 단지라는 범위) 모델에 클래스 메소드로 구현받을, 그래서 대신에 당신은이 작업을 수행해야합니다

self.full_name(search) 
+0

은 내가 을 self.full_name (검색)를 사용하려고했지만 지금은 모든 배우 표시 할 때 오류가 얻을 : 이 협회라는 이름의 '배우'를 찾을 수 없습니다를; 아마 철자가 틀린거야? 액터는 인덱스 페이지에 모든 액터를 표시 할 때 루프에서 사용됩니다. – user322406

+0

그건 정말 별개의 질문입니다. 이 명명 된 범위가 포함 된 모델 클래스 내에 연관 코드를 게시해야합니다. –