Как часто вы действительно будете иметь поля в вашей базе данных, которые будут иметь одинаковые значения, которые вы можете искать подобным образом? Достаточно ли беспокоиться об использовании метода динамического поиска? Возможно нет. Что не так с named_scope для этого?
class User < ActiveRecord::Base
named_scope :user_or_email, lambda{ |user_name|
{ :conditions => ["username =? OR email =?", user_name, user_name] }
}
end
Это делает то, что вы хотите, и я просто не думаю, что подобные вещи будут появляться достаточно часто, чтобы оправдать динамические искатели, но, эй, я могу ошибаться.