次の検索方法があります。
def search(search = nil, field_search1,field_search2, field_search3,field_search4,field_search5)
if search
where("#{field_search1} LIKE ? OR #{field_search2} LIKE ? OR #{field_search3} LIKE ? OR #{field_search4} LIKE ? OR #{field_search5}LIKE ?", "%#{search}%", "%#{search}%","%#{search}%", "%#{search}%","%#{search}%")
else
where(nil)
end
end
それは機能しますが、非常に醜いです。オプションハッシュでフィールド名を渡すようにリファクタリングしようとしています。次のようなことを行うことによって:
def search(search= nil, options={})
options.each do |option|
#Run the query inside here
end
オプションをループして、選択したオプションがそれに一致するクエリを実行し、オプションハッシュが最後に達したらOR
、 LIKE ? OR