我有一个实际上没有任何数据的数据库模型,因为我的所有用户信息都存储在第三方认证服务上。我希望能够像常规模型一样使用模型,因此在加载时,我从API获取所有信息并将其存储在实例变量中。
如何为我的模型设置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
答案 0 :(得分:0)
after_intialize
完全符合我的需要。
答案 1 :(得分:0)
是的,实际上rails有很多方法供您选择:
您可以在此处查看更多方法:http://guides.rubyonrails.org/active_record_callbacks.html