2016-09-30 3 views
0

모든 사용자 정보가 제 3 자 인증 서비스에 저장되어 있기 때문에 실제로 데이터가없는 데이터베이스 모델이 있습니다. 모델을 일반 API처럼 사용할 수 있기를 원합니다. 따라서로드시 API에서 모든 정보를 가져 와서 인스턴스 변수에 저장합니다.ActiveModel :: Model에서 before_action 유형 콜백을 사용하려면 어떻게해야합니까?

내 모델에 대해 before_action 콜백을 설정하려면 어떻게해야합니까? 이 일을 루비 방법이 있습니까?

class Auth0User < ApplicationRecord 
    before_action set_instance_variables 

    validates :auth0_id, presence: true, 
         uniqueness: true 

    def info(key = nil) 
    key.nil? ? @user : @user[key.to_s] 
    end 

    private 

    def set_instance_variables 
    @user ||= auth0_api.user auth0_id 
    end 

    def auth0_api 
    Auth0Client.new(
     client_id: Rails.application.secrets.auth0_client_id, 
     token: Rails.application.secrets.auth0_management_jwt, 
     domain: Rails.application.secrets.auth0_domain, 
     api_version: 2 
    ) 
    end 
end 
+0

https://dockyard.com/blog/2013/08/20/design-patterns-observer-pattern – max

+0

http://guides.rubyonrails.org/active_record_callbacks.html – steel

답변

0

네, 그리고이 방법을 많이했다 레일 :

더 많은 방법을 보시려면 여기를 확인하실 수 있습니다

before_destroy

  • before_create
  • before_save : http://guides.rubyonrails.org/active_record_callbacks.html

    +0

    불행히도 이러한 맥락에서 볼 때 아무 것도 작동하지 않습니다. 문제는 우리 자신의 db에 저장할 수없는 타사 데이터 저장소에서 인스턴스 변수를 설정하는 것입니다. 따라서 'after_initialize'는 인스턴스 변수를 설정하는 유일한 콜백입니다. db에서 모델을로드 할 때 나열한 것들은 실행되지 않습니다. – amingilani

    관련 문제