加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在ROR中记录用户活动

发布时间:2020-12-16 20:33:09 所属栏目:百科 来源:网络整理
导读:我有一个应用程序,目前有两种类型的用户,管理员和供应商,我想记录他们的活动 "TestAdmin" viewed transaction"TestAdmin" added a new vendor"TestAdmin" edited a Transaction"TestVendor" added a new Transaction"TestAdmin" approved Transaction "TestA
我有一个应用程序,目前有两种类型的用户,管理员和供应商,我想记录他们的活动
"TestAdmin" viewed transaction
"TestAdmin" added a new vendor
"TestAdmin" edited a Transaction
"TestVendor" added a new Transaction
"TestAdmin" approved Transaction 
"TestAdmin" rejected Transaction 
etc...

“TestAdmin”是管理员,“TestVendor”是供应商

但我不知道我应该遵循什么方法

我在想这个

在DB中添加一个Activity表,其中包含以下字段

user_id 
browser
session_id
ip_address
action
params

并打电话

before_filter :record_activity

记录所有活动

但不知道如何创建如上所述的消息

此外,我想知道是否有任何错误发生,何时和为什么,所以为此,我采取浏览器字段来确定代码是否不工作在IE等,但这只是一个错误轨道字段.

请帮助和指导一些很好的方式来实现这一点.

谢谢

解决方法

好的,这是我做的…

先创建表

create_table "activity_logs",:force => true do |t|
    t.string "user_id"
    t.string "browser"
    t.string "ip_address"
    t.string "controller"
    t.string "action"
    t.string "params"
    t.string "note"
    t.datetime "created_at"
    t.datetime "updated_at"
end

在应用程序控制器中创建功能

def record_activity(note)
    @activity = Activity_Log.new
    @activity.user = current_user
    @activity.note = note
    @activity.browser = request.env['HTTP_USER_AGENT']
    @activity.ip_address = request.env['REMOTE_ADDR']
    @activity.controller = controller_name 
    @activity.action = action_name 
    @activity.params = params.inspect
    @activity.save
end

然后从任何需要的控制器调用上述函数
喜欢这个….

class AccountsController < ApplicationController
      load_and_authorize_resource

      # POST /accounts
      # POST /accounts.json
     def create
       @account = Account.new(params[:account])
       respond_to do |format|
       if @account.save
        record_activity("Created new account") #This will call application controller  record_activity
        format.js { head :ok }
      else
       format.js { render json: @account.errors,:error => true,:success => false }
      end
    end
  end

所以问题解决了……

感谢所有的帮助….

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读