2
비슷한 질문은 레일스 3에 관한 것이며, 스코프는 레일스 4에서 적당량을 변경했습니다. 구문 적으로 만, 그러나 나는 여전히 최신의 것을 가지고 싶습니다 대답.모델에서 레일즈 4의 두 스코프를 결합하십시오
@recent_cats = Cat.recent
나는 모든 승인 고양이 얻고 싶다면 :
을 나는 모든 최근의 고양이를 얻고 싶다면class Cat < ActiveRecord::Base
scope :recent, -> { order('cats.approve_date ASC').limit(5) }
scope :approved, -> { where(state: 'approved') }
end
: 어쨌든
는 어떻게 이러한 범위를 병합 할
@approved_cats = Cat.approved
하지만 최근 승인 된 모든 고양이는 어떻게 받습니까? 나는 컨트롤러에 merge
기능을 사용할 수 있지만 나는 규칙을 따라야하고 싶은 모델에서이 작업을 수행 :
class Cat < AciveRecord::Base
scope :recent_approved, -> { }
end
도 가능합니다. – Iceman
@Iceman 내가 모델에서 이것을하고 싶다고 말했지만, 그것은 그것을 읽을 수있는 아주 좋은 방법입니다. 감사합니다! – Starkers
결국'self.recent.approved'를': recent_approved' 범위에 넣을 수 있습니다. – MrYoshiji