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

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

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

membalas semua(1)
巴扎黑

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

dalam kaedah

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan