이것은 우려와 범위를 이해하려고하는 레일 멍청한 사람의 질문입니다.레일스 클래스 또는 인스턴스 메소드의 스코프입니까?
난 항상 생각 스코프는 레일 클래스 메소드 있었다하지만 저번에 내가 this code from DHH을 보았다 :
는 그래서visible
방법을 사용하는 방법과 같이이다
module Visible
extend ActiveSupport::Concern`
module ClassMethods
def visible_to(person)
where \
"(#{table_name}.bucket_id IN (?) AND
#{table_name}.bucket_type = 'Project') OR
(#{table_name}.bucket_id IN (?) AND
#{table_name}.bucket_type = 'Calendar')",
person.projects.pluck('projects.id'),
calendar_scope.pluck('calendars.id')
end
end
end
:
current_account.posts.visible_to(current_user)
이것은 나를 혼란스럽게합니다. Self
여기에 게시물 모음이 있으므로 인스턴스에 대해 작업하고 있지만 보이는 메서드는 클래스 메서드로 사용해야합니다. 데이비드가 클래스 메서드를 동적 범위로 호출하려고하지 않습니까? 누군가 명확히 해 주실 수 있습니까?
와 정확히 같은를 사용 그래서 스코프는 실제로 activerecord 객체에 작용하며 클래스에 보낼 수있는 메시지로도 사용할 수 있습니다. 그 맞습니까? –
나는 정말로이 질문을 이해하지 못한다. 당신이 명확히 할 수 있습니까? –
스코프를 사용하여 모델 클래스뿐만 아니라 레코드에서도 작동 할 수 있습니까? –