【发布时间】:2018-07-31 12:17:45
【问题描述】:
到目前为止,"common" 从数据库中获取随机记录的方法是:
# Postgress
Model.order("RANDOM()").first
# MySQL
Model.order("RAND()").first
但是,在 Rails 5.2 中执行此操作时,会显示以下弃用警告:
弃用警告:使用非属性参数调用的危险查询方法(其参数用作原始 SQL 的方法):“RANDOM()”。 Rails 6.0 将不允许使用非属性参数。不应使用用户提供的值(例如请求参数或模型属性)调用此方法。可以通过将已知安全值包装在 Arel.sql() 中来传递它们。
我对 Arel 不是很熟悉,所以我不确定解决此问题的正确方法是什么。
【问题讨论】:
标签: ruby-on-rails rails-activerecord deprecation-warning ruby-on-rails-5.2