[英]Rails Active Record order with parameters
有没有办法在Rails中为.order
提供参数? 您可以为.where
提供参数。
例如:
People.where("age > :min_age and age < :max_age", {:min_age => 20, :max_age: 80})
使用.order
执行此操作会与sql进行不同的转换。
例如:
Places.order("pow(lat - :mylat,2) + pow(lon-:mylon,2)", {:mylat => 1, :mylon => 2})
转换为以下sql,它给出了sql语法错误。
SELECT * FROM places ORDER BY pow(lat - :mylat,2) + pow(lon - :mylon,2) '---\n:mylat: 1\n:mylon: 2\n'
我知道你可以使用.sort_by
对数组进行.sort_by
。 我想知道你是否可以使用Active Record中的.order函数来完成此操作。
长答案简称:不,不是。
您必须编写自己的实现,这将严格验证参数的值并构建您的订单字符串
要小心这一点,因为order
不会清理参数,与其他where
不同
> User.order('1; select * from users')
=> SELECT `users`.* FROM `users` ORDER BY 1; select * from users
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.