In Rails 3, I created a Search Form that does a FIND with conditions in the Models file.
@projects = find(:all,
:select => 'projects.*',
:conditions => ['name = ?', search_name]
).first
This works great if a name is provided in the searchform (search_name). Problem is if search_name is blank, Rails Errors (can’t say I blame it)…
What is the smart way to handle this situation? I’d like, if search_name is blank, to not error but return everything.
Suggestions? Thanks!
You can create a scope to handle this. In your Project model, add something like:
then in your controller, simply call:
EDIT:
If you need to serach for multiple fields you can adapt the scope:
scope :search_by(name), lambda{|name| first.includes(:owner).where(“projects.name LIKE ? OR owners.name LIKE ?”, name, name) unless name.blank?}