Maison  >  Questions et réponses  >  le corps du texte

ruby - 怎么在model里边获取当前用户的ID等信息

想要做一个操作日志记录执行过的操作,
然后想在model里边获取当前操作用户的ID,进行操作的数据表名称,还有操作类型
现在写了一个moduel。

module RecordOperation
  extend ActiveSupport::Concern
  included do
    after_update :record_operation
    before_destroy :record_operation
    after_create :record_operation
    def record_operation

    end
end
黄舟黄舟2761 Il y a quelques jours847

répondre à tous(1)je répondrai

  • 巴扎黑

    巴扎黑2017-04-22 08:58:27

    C'est ce que dit le document de conception
    Pour vérifier si un utilisateur est connecté, utilisez l'assistant suivant :

    user_signed_in?
    

    Pour l'utilisateur actuellement connecté, cette aide est disponible :

    current_user
    

    Vous pouvez accéder à la session pour ce périmètre :

    user_session
    

    =================================
    Quant au modèle, un moyen direct consiste à passer directement l'instance utilisateur ou l'identifiant

    dans la méthode

    J'aime mieux la méthode de traitement de Redmine
    Utilisateur.rb

    def self.current=(user)
        Thread.current[:current_user] = user
    end
    
    def self.current
      Thread.current[:current_user] ||= User.anonymous
    end
    

    Puis dans la méthode de connexion

    User.current = find_current_user
    if user && user.is_a?(User)
      User.current = user
      start_user_session(user)
    else
      User.current = User.anonymous
    end
    

    Enfin, User.current peut être appelé n'importe où pour obtenir une instance de la personne actuellement connectée

    En fait, je n'ai pas utilisé le design en profondeur, et je ne suis pas sûr de sa mise en œuvre spécifique.
    Je suis juste devenu curieux, alors je vais l'essayer à mon retour ce soir

    répondre
    0
  • Annulerrépondre