2012-07-27 7 views
0

평범하지 않은 범위를 만들려고합니다. 웹 사이트를 다루는 앱이 있습니다. "sites"라는 모델이 있는데, has_many 페이지가 있습니다. 사이트 모델에는 homepage라는 열이 있습니다. 각 사이트의 페이지 목록에는 홈페이지와 추가 페이지가 들어 있습니다 (about, 가격은 무엇이든간에).여러 모델을 기반으로 범위 만들기

페이지 모델에 대해 두 개의 범위를 만들고 싶습니다. 하나는 홈페이지를 식별하고 다른 하나는 모든 추가 페이지를 식별합니다. 나는 이런 생각을하고있었습니다.

my_homepage = Site.find_by_id(self.site_id).homepage 
scope :homepage, where(url: my_homepage) 
scope :additional_pages, where(url != my_homepage) 

아쉽게도 작동하지 않습니다. 사실, 내가 콘솔에서 그들과 놀려고 할 때, 나는 할 수 없다. 이 오류가 발생합니다.

(Object doesn't support #inspect) 

더 똑똑한 방법이 있습니까?

답변

1

이 시도 :

scope :homepage, joins(:sites).where("sites.homepage = pages.url") 
scope :additional_pages, joins(:sites).where("sites.homepage <> pages.url") 
+0

흥미 롭. 나는 그처럼 스코프를 한 번도 본 적이 없다. "joints (: site)"(단수)라고 말하기 위해 코드를 수정했는데 잘 작동합니다. 한 가지 질문 : 추가 페이지 중 robots.txt 파일이 표시되는 것으로 나타났습니다. 나는 그것들을 제외시키고 싶지만, 나는 어떻게 확신 할 수 없다. additional_pages 메소드에는'.where ("robots.txt '<> pages.url [-10,10]")'을 추가했지만 행운은 없습니다. 어떤 제안? (내가 원하면 다른 StackOverflow 게시판에서 요청할 수 있습니다.) –

+1

네, 다른 질문을 만드는 것이 좋습니다. (그리고 내 대답을 확인하십시오 :)) – Dougui

+0

질문을 후속 업로드 : http://stackoverflow.com/questions/11694325/multiple-model-scope-with-multiple-where-statements –

관련 문제