How to solve this problems gracefully

hey guys,i follow the Ruby On Rails Guides,but i didn’t see the query
about the guide,so i have a question:
name and title are attrs in posts,i need to find records by query name
and title with any of them are none-empty
so should i need to detect the name or title such as:
if name!=nil and title==nil then
Post.where(‘name=?’)
elsif name==nil and title!=nil then
Post.where(‘title=?’)
elsif(name!=nil and title!=nil) then
Post.where(‘name=? and title=?’)

so much boring codes,isn’t it?

i want to Post.clever_find(@post)

Hi dan,

You could do something like:


posts = []
if not name.blank? or not title.blank?
sql_buf = []
vals_buf = []
if not name.blank?
sql_buf << “name=?”
vals_buf << name
end
if not title.blank?
sql_buf << “title=?”
vals_buf << title
end
conditions = [sql_buf.join(" and ")] + vals_buf
posts = Posts.where(conditions).order(…)…
end
return posts

Jeff

On Jan 28, 2:25pm, Jeff L. [email protected] wrote:

conditions = [sql_buf.join(" and ")] + vals_buf
posts = Posts.where(conditions).order(…)…

Or
Post.where({:name => name, :title => title}.reject {|k,v| v.blank?})

Fred