Предполагая, что ваш #find находится в контроллере и что выбранное значение входит как элемент в params
(и я думаю, что вы должны рассмотреть возможность что-то изменить, если нет!), Тогда вы сможете сделать что-то вроде этого:
if params[:last_name] # or whatever it's actually called
Object.find("billy," :conditions => {'last_name = ?', params[:last_name]})
else
Object.find("billy")
end
Если вы используете относительно свежую версию ActiveRecord (2.1 должна сделать это, возможно, 2.0), то вы можете сместить эту логику до named_scope
:
class Object < ActiveRecord::Base
named_scope :for_last_name, lambda { |nm| { :conditions => nm.nil? ? {} : { last_name => nm } }
и тогда ваш контроллер сводится к (а мы любим тонкие контроллеры)
Object.for_last_name(params[:last_name])
(все несколько непроверено)