On 1/9/07, Helder Oliveira <hrpof / sapo.pt> wrote: > i know the _ isnt right, but im trying not to make the query 2 times, > how can i make that if not doing the query two times ? either ret = i.timesheets.find(:first,:select=>'inserida',:order=>'inseridaDESC').inserida.to_s(:db) if ret.nil? miss = 'nemhuma inserida' else miss = ret end or (ugly) if (ret = i.timesheets.find(:first,:select=>'inserida',:order=>'inseridaDESC').inserida.to_s(:db)).nil? miss = 'nemhuma inserida' else miss = ret end NB you can rewrite the first one as: ret = i.timesheets.find(:first,:select=>'inserida',:order=>'inseridaDESC').inserida.to_s(:db) miss = ret.nil? ? 'nemhuma inserida' : ret or if the result is some object (not false) then you can do ret = i.timesheets.find(:first,:select=>'inserida',:order=>'inseridaDESC').inserida.to_s(:db) miss = ret || 'nemhuma inserida' or even miss = i.timesheets.find(:first,:select=>'inserida',:order=>'inseridaDESC').inserida.to_s(:db) || 'nemhuma inserida' (if the result is not nil, then only the first term will be evaluated, otherwise also the second will be). ---- Another issue: I suspect you'll have problem when find() returns nil (i.e. nothing's found) and you'll be calling nil.inserida.to_s(:db). I suppose you'd check that nil as well. i.timesheets.find(:first,:select=>'inserida',:order=>'inseridaDESC').*possible nil HERE*inserida.to_s(:db)