自分のユーザ情報がすべて第三者認証サービスに保存されているため、実際にデータを持たないデータベースモデルがあります。通常のモデルのようにモデルを使用できるようにするため、ロード時にAPIからすべての情報を取り出してインスタンス変数に格納します。ActiveModel :: Modelでbefore_action型コールバックを使用するにはどうすればよいですか?
before_action
は私のモデルのコールバックのように設定するにはどうすればよいですか?これを行うためのRubyの方法はありますか?
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
https://dockyard.com/blog/2013/08/20/design-patterns-observer-pattern – max
http://guides.rubyonrails.org/active_record_callbacks.html – steel