ruby - 怎么在model里边获取当前用户的ID等信息
黄舟
黄舟 2017-04-22 08:56:27
0
1
868

想要做一个操作日志记录执行过的操作,
然后想在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
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

répondre à tous(1)
巴扎黑

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal