2011-02-01 4 views
2

에 의해 오버라이드 (override)됩니다rails3 나는이 모델이 default_scope

User.rb

default_scope :order => 'users.created_at DESC' 

scope :ranking, lambda { unscoped { order('users.ranking DESC') }} 

아직도 내가 ORDER BY users.created_at DESC, users.ranking DESC를 포함하는 to_sql를 얻을 수 ...

이유를 설명 할 수 있습니까?

난 정말 내가이 모델을 사용하게 될 모든 컨트롤러에서 범위가 지정되지 않은 전화를하고 싶지 않아요.

감사합니다!

답변

1

발견 한대로 default_scope은 종종 가치가있는 것보다 문제가 많습니다. 당신이 그것을 고수하고자하는 경우, 당신은 이전 주문 무시 reorder을 사용할 수

scope :ranking, reorder("ranking DESC") 
+0

에 대한 박았 구만있어! 정말 감사합니다! – schone

-1

하지 @TimPost 내 대답을 삭제 한 이유를 확인을하지만 난에 대한 레일 3.0.5와 루비 1.9.2를 사용하고 있습니다 프로젝트 및 재주문 (btw 작동)을 사용하면 로그에 다음과 같이 표시됩니다.

경고 : 재주문은 더 이상 사용되지 않습니다. except (: order) .order (...)를 대신 사용하십시오. (<class:Item>

에서 호출 그래서 난 내 대답은 삭제 된 공정하다고 생각하지 않고 내가 큰 일을 엉터리 응답

+1

내가 삭제 된 답을 볼 수 있습니다, 그것을 'reorder는 더 이상 사용되지 않으며 기본 범위의 제한을 제거하지 않습니다 .' 전체를 제거하는 방법에 대한 다른 생각은 갑자기 끝나는 곳 2. 삭제 이유는 다음과 같습니다. 두 번째 문장을 끝내지 마라. 2) 두 번째 문장은 실제로 어떻게해야하는지에 대한 질문을 실제로 시도하는 것처럼 보입니다. * SO에 대한 답변 *은 이와 같은 질문을해서는 안됩니다. 그들은 스스로 새로운 질문을해야합니다. –

+0

Kirk, 명확히 해주셔서 감사합니다. 사과 드리며 다음에 더 나은 일을하게 될 것입니다. – bokor