Maison > Questions et réponses > le corps du texte
想要做一个操作日志记录执行过的操作,
然后想在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
巴扎黑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
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