a = Session.where(:date_at => date_from..date_to).
order("date_at").
count("DISTINCT(user_id)",
:group => "date(convert_tz(date_at, 'UTC', 'Europe/Warsaw'))")
Run Code Online (Sandbox Code Playgroud)
我怎么能在Rails 4中写这个?
这会产生错误:
DEPRECATION WARNING: Relation#calculate with finder options is deprecated. Please build a scope and then call calculate on it instead. (called from block (2 levels) in <top (required)> at /Users/xxx/Desktop/DEPLOY/d1_mysql/d1/app/admin/user.rb:11)
DEPRECATION WARNING: The :distinct option for `Relation#count` is deprecated. Please use `Relation#distinct` instead. (eg. `relation.distinct.count`). (called from block (2 levels) in <top (required)> at /Users/xxx/Desktop/DEPLOY/d1_mysql/d1/app/admin/user.rb:11)
Run Code Online (Sandbox Code Playgroud) 在文档中,Rspec Mocks 维护者
... 出于多种原因不鼓励使用它...
列出的原因似乎与expect此功能的版本有关,但它们对两者没有区别。
我可以理解为什么expect不鼓励该版本,但该allow版本似乎没有共享列出的问题。
似乎使用该allow版本是测试某些类型行为的最方便的方法。
例子:
我正在测试某些路线的授权。一种方法是在数据库中创建一个用户,但这似乎相当笨拙,我更喜欢只创建一个模拟对象并在授权调用期间返回它。此示例是使用复杂库的测试代码的特定案例,这些库是单独测试的。
鉴于它不鼓励,什么是更好的选择?
我正在集成一个 3rd 方 API,并且在一个步骤中他们将 JSON 数据发布到我们的服务器中。
内容类型是application/json,但有效负载实际上是 gzip 压缩的。由于内容类型,rails 在尝试解析数据时抛出 ActionDispatch::ParamsParser::ParseError 异常。
我计划编写一个机架中间件来捕获异常并尝试解压缩有效负载,但我只想为该特定操作执行此操作,有没有办法仅针对特定路由执行中间件?
更新
我已经考虑过模式匹配路径,但理想情况下,我想要一些更健壮的东西,以防将来路径发生变化。
更新
关于压缩的问题可以通过下面的马特评论更好地解决,并且路由在另一个问题中得到了回答,这个问题现在被标记为重复。
我现在不是 100% 确定,但我相信我收到了一个异常,导致请求的状态以 401 响应。
我已经消除了控制器中的所有代码,但问题仍然存在,并且似乎有些东西正在捕获异常以返回 401 状态,因此没有堆栈跟踪。
我已经创建了一个自定义中间件来尝试和调试,但我仍然无法找到问题的根源。
如何隔离问题发生的位置?
我们正在使用 heroku,所以 pry 似乎不起作用,我也没有对正在运行的服务器的命令行访问权限。我无法在本地开发机器上复制该问题。