【发布时间】:2012-08-23 17:19:52
【问题描述】:
您好,我对 Rails 3.2 和订购有疑问。
当想要按字段排序集合时,当调用 .last ActiveRecord 时行为很奇怪......
>> User.order("FIELD(id, '1')")
User Load (0.4ms) SELECT `users`.* FROM `users` ORDER BY FIELD(id, '1')
=> []
>> User.order("FIELD(id, '1')").first
User Load (0.4ms) SELECT `users`.* FROM `users` ORDER BY FIELD(id, '1') LIMIT 1
=> nil
>> User.order("FIELD(id, '1')").last
User Load (0.3ms) SELECT `users`.* FROM `users` ORDER BY FIELD(id DESC, '1') DESC LIMIT 1
Mysql2::Error: You have an error in your SQL syntax;
您可以看到在关系上调用 last 两次添加 DESC,但它应该只将它放在整个 ORDER BY FIELD 之后,而不是放在括号内..
有人知道怎么做吗?
谢谢!
【问题讨论】:
标签: mysql ruby-on-rails activerecord sql-order-by ruby-on-rails-3.2