我尝试使用jsonb数据格式(postgresql中的新功能),记录用户(与设计交互)活动,如pageview ...搜索字符串......
版本: Rails 4.2.6 Postgresql 9.5
我的模特:
class CreateUserLogs < ActiveRecord::Migration
def self.up
create_table :user_logs, :id => false do |t|
t.integer :user_id
t.jsonb :data, default: '{}'
end
add_index :user_logs, :user_id end
def self.down
drop_table :user_logs
end
end
我的日志服务对象:
class UserLogger
def initialize(current_user)
@user_id = current_user.present? ? current_user.id : 0
end
def insert_log_data(request_ip, controller_name, action_name, object)
user_log = UserLog.create!({
user_id: @user_id,
data: {
ip_address: request_ip,
controller_name: controller_name,
action_name: action_name,
id: object.id,
created_at: Time.now.to_s(:db)
}
})
end
end
得到像用户喜欢的前三篇文章......等等。 postgresql jsonb是noSQL,是日志数据的不错选择。
我尝试impressionist gem,但是当数据变大时,效果会下降。
我应该将 User_ID 放在jsonb数据类型中吗?或者其他更好的方式?(我已经使用 Google Analytics ,但它无法跟踪每个用户的活动。我需要自定义数据。)
但如果我想分组和订购数据,也许印象派是更好的选择?