저는 ROR에 익숙하지 않아 범위를 이해하려고합니다. 현재 구현에서는 모든 프로세서를 가져와보기에 표시하고 있습니다.범위를 사용하여 여러 테이블에 조인하는 방법
class ProcessorsController
def index
@processors = Processor.all
end
end
나는이 그래서 사용자가을 관리자에 경우에만 프로세서를 얻을 수 있습니다 수정할. 이것은 나의 관계가 설정되는 방법이다.
class Processor
belongs_to :feed
#SCOPES (what I have done so far)
scope :feed, joins(:feed)
scope :groups, joins(:feed => :groups).join(:user).where(:admin => true)
end
class Feed < ActiveRecord::Base
has_and_belongs_to_many :groups
end
class Group < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_many :groups
scope :admin, where(:admin => true)
end
나는 나의 놀리려는에서
pry(main)> Processor.find(63).feed.groups.first.user.admin?
PS를이 작업을 수행 할 수 있었다 : 누군가가 나는 관계가 복잡한 경우 범위를 사용하는 방법을 배울 수있는 좋은 자원을 제공 할 수있다.
고마워요. 예, 나는 그 문서를 철저히 조사했지만 여러 조인을 사용하지 않았습니다. –
당신의 대답은 스코프 내부에서 조인을 사용하는 방법에 대해 정말로 설명해주었습니다. 그것은 단지 동일합니다. 메서드를 호출하기 전에 모델 이름 부분을 '생략'해야합니다. – Francisco