首先,请允许我说,我不知道当前的问题是"正确的"得到我想要的方式。这就是问题所在。
我有一个名为setTimeout
的数据库,如下所示:
users
我知道在Controller中,我可以编写类似
的内容|__id__|__dateTime__|___ipAddress___|__userName__|
| 1 | time1 | 192.168.0.1 | Paul |
| 2 | time2 | 192.168.0.22 | Jessica |
| 3 | time1 | 192.168.0.22 | Jon |
那相当于
User.find(3)
但是,如果在我的日志中,我想要查找有多少个唯一的IP地址,或者我想要一个返回SELECT * FROM users WHERE (users.id = 3) LIMIT 1
期间发生的事件数量的查询。
有没有办法在Controller中执行此操作,或者这不是应该在那样的地方完成的?
答案 0 :(得分:1)
Active Record提供查询界面,可以是found on the guides here。您可以使用#find_by_query执行arbitrary queries as well,而不需要依赖辅助方法。
找到多少个唯一的IP地址
这将通过类似的方式实现
User.select(:ipAddress).distinct.count
我想要一个返回time1期间发生的事件数量的查询
我不确定您对事件的意义,但如果您想要计算User表中与给定时间戳匹配的条目,您可以执行User.where(:dateTime=>time1).count
(我假设您的给定示例是假的,但您不希望将列命名为dateTime)