Rumah  >  Soal Jawab  >  teks badan

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
黄舟黄舟2712 hari yang lalu792

membalas semua(1)saya akan balas

  • 巴扎黑

    巴扎黑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

    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

    balas
    0
  • Batalbalas