Rumah > Soal Jawab > teks badan
想要做一个操作日志记录执行过的操作,
然后想在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
Inilah yang dikatakan oleh dokumen reka bentuk
Untuk mengesahkan sama ada pengguna telah log masuk, gunakan pembantu berikut:
user_signed_in?
Untuk pengguna semasa log masuk, pembantu ini tersedia:
current_user
Anda boleh mengakses sesi untuk skop ini:
user_session
================================
Bagi model pula, cara langsung adalah dengan meneruskan secara langsung dalam contoh pengguna atau id
Saya lebih suka kaedah pemprosesan redmine
Pengguna.rb
def self.current=(user)
Thread.current[:current_user] = user
end
def self.current
Thread.current[:current_user] ||= User.anonymous
end
Kemudian dalam kaedah log masuk
User.current = find_current_user
if user && user.is_a?(User)
User.current = user
start_user_session(user)
else
User.current = User.anonymous
end
Akhirnya User.current boleh dipanggil di mana-mana sahaja untuk mendapatkan contoh semasa yang dilog masuk secara peribadi
Malah, saya tidak menggunakan reka bentuk secara mendalam, dan saya tidak pasti tentang pelaksanaan khususnya.
Saya hanya ingin tahu, jadi saya akan mencubanya apabila saya kembali malam ini