2012-02-23 50 views
0

我對SQL知之甚少。我的應用程序正在運行Rails 3.0.9。我在我的應用程序的搜索功能,它允許用戶搜索照片,但現在查詢只檢查photo.nameRails:MySQL查詢搜索多個屬性的正確方法

where("photos.name LIKE ?", "%#{search}%") 

我想它還要檢查photo.description的比賽。我試過如下:

where("photos.name OR photo.description LIKE ?", "%#{search}%") 

這似乎確實在發展工作(我使用SQLite的發展),但一旦在Heroku上,該代碼失敗。什麼是正確的方法來做到這一點?謝謝。

+2

SQL語法應該是'photos.name LIKE? OR photo.description LIKE?'如果你只有'WHERE photos.name',mysql會將'photos.name'轉換爲一個布爾值並且只輸出計算結果爲true的元組。如果在你的調用中添加第二個'?',則可能需要再次添加第三個參數,可能是''%#{search}%「',但我不知道事情如何在軌道中滾動。 – Basti 2012-02-23 03:14:31

+0

謝謝你,這似乎是工作。 (不知道我沒有想到這個!) – 2012-02-23 03:19:41

回答

1

你可以試試這個

where("photos.name LIKE ? OR photo.description LIKE ?", "%#{search}%", "%#{search}%") 
0

但一旦在Heroku

Heroku的使用不MySQL的Postgres的 - 你使用的是MySQL插件提供的MySQL到您的應用程序?不同數據庫之間的語法可能會有所不同 - 我鼓勵您針對將要投入使用的數據庫進行開發。