시나리오 : 레일즈 시스템에 액세스 제어 목록을 통해 모두 제어해야하는 몇 가지 ActiveRecord 모델이 있습니다. 나는 내가 원하는 것을 수행하는 멋진 작은 ACL 구현을 가지고 있지만, 현재 체크 - 액세스 호출은 각각의 제어 된 객체 유형 (문서, 사용자 등)에 모두 복제되어있다.루비 모듈이 혼합 된 클래스 메서드 호출하기
내 직감은 공유 코드를 모듈로 가져 와서 믹스 인으로 사용하는 것입니다. 혼성 모듈이 ActiveRecord :: Base 메소드를 호출했기 때문에 이것이 가능한지 (또는 올바른 구문이 무엇인지) 확신 할 수 없다. scope와 has_many 정의가있다.
class Document < ActiveRecord::Base
include Controlled
end
module Controlled
has_many :acls, as: :controlled
scope :accessible, ->(uid, level){where("BUNCH OF SQL HERE")}
def access_convenience_methods
#stuff to provide easy access to authorization checks
end
end
그리고 나는 제어 등이 액티브 :: 자료에서 파생 몇 가지 다른 모델이있을 것이다 :
내가 달성하고 싶은 무엇의 예
는 여기에있다.모듈에서 has_many 및 scope 호출이 발생하여 혼성 모듈에서 호출 할 수 없습니다. 분명히이 컨텍스트는 외부 클래스 메서드에 액세스 할 수 없습니다.
어떤 조언을 환영합니다.