저는 Pundit gem의 단순함을 좋아합니다. 나는 그것을 데이터베이스에 저장함으로써 정책을 동적으로 만들고 싶습니다.pundit 정책을 데이터베이스에서로드 할 수 있습니까?
기본적으로 응용 프로그램을 다시 배포 할 필요없이 정책을 변경할 수있는 방법을 찾고 있습니다.
저는 Pundit gem의 단순함을 좋아합니다. 나는 그것을 데이터베이스에 저장함으로써 정책을 동적으로 만들고 싶습니다.pundit 정책을 데이터베이스에서로드 할 수 있습니까?
기본적으로 응용 프로그램을 다시 배포 할 필요없이 정책을 변경할 수있는 방법을 찾고 있습니다.
첫번째 방법
학자 정책은 순수 루비 코드입니다, 그래서 당신은 데이터베이스 내에서 코드를 유지하고 동적으로 평가하고 싶지 않은 경우, 나는 대답은 더 말할 것이다. 안전하지 않아. 그래도 괜찮을거야. 직접 도구 물론
class PostPolicy < ApplicationPolicy
def update?
access_setting = PolicySetting.find_by(key: self.class_name)
user.role.in?(access_setting['roles'])
end
end
, 복잡성 및 유연성 :
두번째 방법
하지만 아무것도 예를 들어 간단한 JSON에서 규칙을 유지하고 학자를 사용하여 비교 모델을 생성하지 못하도록 서로에 달려있다.
그냥 주위에 작동되어 제 3의 방법. 권한 부여 프로젝트를 주요 프로젝트와 차별화하여 배포하므로 (물론 제로 다운 타임은 물론) 주요 주요 프로젝트에 영향을 미치지 않습니다.
자신의 DSL을 만들기 네번째 방법은 데이터베이스에 저장 될
사용 무언가가 데이터베이스
논리를 저장하는 제 5 방법