有没有办法找出用户每天有多少次独特登录?
我们可以跟踪用户以了解sign_in的用户数或用户登录的时间:
User.last.sign_in_count
或
User.last.last_sign_in_at
但不是每天他登录的时间。
答案 0 :(得分:3)
以下是我在rails应用中所做的事情:
我创建了一个新模型来跟踪每次访问
rails g model Visit user_id:integer user_ip:inet user_email:string
然后
rake db:migrate
接下来,我创建了一个控制器来跟踪
的会话app/controllers/track_sessions_controller.rb
info about devise session controller
然后我添加了在每次成功登录后运行的代码
class TrackSessionsController < Devise::SessionsController
after_filter :after_login, :only => :create
def after_login
Visit.create!(user_id: current_user.id, user_ip: current_user.current_sign_in_ip, user_email: current_user.email)
end
end
然后更新routes.rb的这一部分
devise_for :users
到
devise_for :users, :controllers => { :sessions => "track_sessions" }
如果您想查看用户每天有多少次唯一登录,您现在可以执行以下操作:
User.all.each do |user|
logins_per_day(user.id)
end
def logins_per_day(user_id)
dates_visited = Visit.where(user_id: user_id).select('distinct created_at').all.collect{|x| x[:created_at].to_date}
puts "************* USER ID #{user_id} *************"
dates_visited.group_by {|date| date}.map {|date_visited, times_visited| puts "Date Visited: #{date_visited} Times Visited: #{times_visited.count}"}
end
答案 1 :(得分:1)
你可以做的是创建一个像日志一样工作的表,在那里你输入每个登录,或者,你可以做的是,在你的传递登录控制后得到de登录的yor soucer代码创建一个.txt并插入.txt用户名和日期,但不好的一面是日志将在计算机上。
如果你选择使用tablein sql,acces或者你想要的任何东西,只需选择一个解决方案。
从table_log_login中选择count(*),其中user ='user'和date ='yyyy-mm-dd';
答案 2 :(得分:0)
我无法理解你想要的东西,所以:
如果要计算每天的登录次数,可以为登录方法创建一个后置过滤器,用于检查日期(假设您有一个表格,用于跟踪具有日期的登录次数)。
如果您想知道用户登录的连续天数,您可以执行相同的操作,而是保存开始日期和结束日期,以便了解“条纹”何时结束。
PS:如果你有英语问题,用英语和任何其他语言发布你都会说得很流利,所以有人可以正确翻译。
答案 3 :(得分:0)
好的,对不起,我理解得很好,但写得不太好,比试试用两种语言。
当您登录程序时,在日志表中插入数据库,当程序关闭时,更新行,使用login start插入并使用login end更新,可以在sqlserver中使用smalldatetime或在mysql中使用datetime,因此,您可以毫无问题地选择登录的日期,小时或分钟。
想一想: 插入tb_login(cod_login,cd_user,dt_start)值('26','5','2013-12-30 08:02'); 注意:您需要一个接受null的列,列是“dt_end”
比你更新 更新集dt_end ='2013-12-30 10:10'来自tb_login,其中cod_login ='26';
我的母语(葡萄牙语):
好的,desculpa,entendo bem masnãescrevoigualmente bem,entãvamostentar em duas linguasquandodocêlogano seu programa,vocêinterrena tabela de login e quando encerra o programa,o mesmo realizaumaatualizaçãnalinha com a data de log out,vocêpodeusar“smalldatetime”no SqlServer ou“DateTime”no mysql ,então,épauseivelselecionar sem problemas o dia,hora ou minutor dos logins。
nenseso: 插入tb_login(cod_login,cd_user,dt_start)值('26','5','2013-12-30 08:02'); nota:voce precisa ter uma coluna que aceita“null”,colunaé“dt_end”
不可思议 更新集dt_end ='2013-12-30 10:10'来自tb_login,其中cod_login ='26';