2012-09-20 58 views
0

觀點:紅寶石軌道MySQL服務器版本的正確語法使用附近'?的find_by_sql

<% Favorite.find_by_sql("SELECT p.* FROM favorites as f LEFT JOIN posts as p ON p.user_id = f.user_id WHERE f.user_id = ? limit 15", @user.id).reverse.each do |post| %> 

我收到以下錯誤:

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 '? limit 15' at line 1: SELECT p.* FROM favorites as f LEFT JOIN posts as p ON p.user_id = f.user_id WHERE f.user_id = ? limit 15 

什麼我基本上想是讓我有收藏

回答

1

帖子嘗試

<% Favorite.find_by_sql(["SELECT p.* FROM favorites as f LEFT JOIN posts as p ON p.user_id = f.user_id WHERE f.user_id = ? limit 15", @user.id]).reverse.each do |post| %> 

需要發送查詢和它的參數作爲數組來獲取參數替換髮生。

您是否知道此方法已被棄用,而不是數據庫不可知的所以絕對是最後的手段和維護的噩夢。

應該是你的模型的一個方法來做到這一點,把SQL放在視圖中不僅僅是脫軌,它是一個災難性的列車殘骸。

+0

謝謝我打算這樣做,只是想確保查詢工作的第一手 – fxuser

相關問題