2012-08-22 3 views
2

저는 거의 모든 모델에서 ActiveAdmin eager 로딩을 사용하고 있습니다. 나는 최근에 내가하는 데 사용할 내 검색 모델이 같은 일을 (시도 할 때"Search"(이름 충돌)라는 모델에 대한 ActiveAdmin eager 로딩이 작동하지 않습니다. (이름 충돌)

응용 프로그램/관리/coaches.rb가

ActiveAdmin.register Coach do 
    controller do 
    def scoped_collection 
     Coach.includes(:addresses, :user, :sport, {:user => :user_metric}) 
    end 
    end 
end 
그러나

, 기록이 사용자를 검색 : 예를 들어,이 내 코치 모델 위대한 작품)했을 :

응용 프로그램/관리/searches.rb는

ActiveAdmin.register Search do 
    controller do 
    def scoped_collection 
     Search.includes(:sport) 
    end 
    end 
end 

나는/관리자는/

을 검색 내가 방문하려고 할 때 다음과 같은 오류가
NoMethodError in Admin::SearchesController#index 

undefined method `includes' for 
ActiveAdmin::ResourceController::Collection::Search:Module 

app/admin/searches.rb:5:in `scoped_collection' 

나는 여기에 일어날 수있는 상수가 Search이라고 생각합니다. 내 열정적 인로드에서는 ActiveRecord 모델 대신 내부 ActiveAdmin 모듈을 참조하고 있습니다. 이 이름 충돌을 방지 할 수있는 방법이 있습니까? 어쩌면 ActiveRecord :: Search (또는 이와 비슷한)? 아니면 아마도 전적으로 다른 일이 벌어지고있는 것일까 요?

상수 Search은 사이트의 다른 곳에서 작동하며 열심히로드를 구현하기 전에 ActiveAdmin 검색 페이지가 정상적으로 작동합니다.

+1

시도 :: 검색 대신 검색 – Fivell

답변

1

@Fivell 권장대로 Search 대신 ::Search을 시도하십시오. app/admin/searches.rb:5Search에 대한 참조가 실제로 ActiveAdmin::ResourceController::Collection::Search을 참조하는 것 같습니다. 이 문제를 해결하지 않고, 이름 충돌이 이상한 버그를 자르기하는 경향이, 내가 뭔가에 Search 클래스 이름을 변경하는 것을 권장하지 않을 수 있습니다 경우

...

행운을 빕니다!

관련 문제