Rails三兩事 A website introduce you ruby&rails and technology news.

29Sep/091

Rails的Find SQL語法在多變情況下.

前陣子寫內部簡單的Search Engine,面對SQL其實突然有點失措.
在Rails底下,sql通常是下指令如
Find, Find_by.
傳統的是 Obj.find(:all,:conditions=>["sql command",vara ,varb ,varc])
然而有時要做進階的判斷,依據狀況可能有不同的參數&Conditions,又不想單純的find_by_sql.
如何改變conditions指令呢?

fcon=['']
fcon[0]="a like ? and b like ? and c like ?"
fcon << params[:a]
fcon << params[:b]
fcon << params[:c]

fcon[0]="d like ? and e like ? and f like ?"
fcon << params[:d]
fcon << params[:e]
fcon << params[:f]

Obj.find(:all,:condition=>fcon)

如此一來就不用find_by_sql,又可以達成conditions的變化.

Share and Enjoy:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
Comments (1) Trackbacks (0)
  1. Other variant is possible also


Leave a comment


No trackbacks yet.