2011-10-25 42 views
2

創建主動記錄查詢並調用last其中有一個訂單使用MYSQL的order by field會引發StatementInvalid異常。ActiveRecord - 按字段順序拋出StatementInvalid最後調用

例如:

ruby-1.9.2-p180 > User.order('field(name, \'joe\')').last 

ActiveRecord::StatementInvalid: Mysql2::Error: You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the right 
syntax to use near 'DESC, "joe") DESC LIMIT 1' at line 1: 
SELECT `users`.* FROM `users` ORDER BY field(name DESC, "joe") DESC LIMIT 1 

的問題是,ActiveRecord的是附加DESCnamefield聲明的內部以及外部。

有沒有更好的方法,通過具有activerecord的特定列值進行排序,或者解決此問題的解決方法?

回答

0

這有什麼錯

User.where("name LIKE ?", \'joe\').last! 

如果你只是想最後的記錄,爲什麼用order麻煩?

+0

我簡化了我的示例來說明問題 - 在我的情況下,我正在對位置進行訂單,用戶郊區/城市應該是返回的第一個項目。我使用'last'的原因是我需要計算出集合中的哪個項目是另一個項目的上一個記錄。 – roo

相關問題