所以我希望能够使用find_by_id_or_name
获取一个对象,我觉得我看到了这样的另一个问题,但很难找到任何资源来制作我自己的查找器。
答案 0 :(得分:5)
您可以通过向模型添加类方法来实现此目的,例如
class Model < ActiveRecord::Base
def self.find_by_id_or_name(id_or_name)
find :first, :conditions => ['id = ? or name = ?', id_or_name, id_or_name]
end
def self.find_all_by_id_or_name(id_or_name)
find :all, :conditions => ['id = ? or name = ?', id_or_name, id_or_name]
end
end
然后你就可以了
Model.find_by_id_or_name(id_or_name)
您可以根据需要稍微自定义方法,例如如果您想先id
然后name
尝试,可以先使用Model.exists?
查看是否有匹配的记录,然后再执行find_by_name
。您还可以查看id_or_name
是否包含字符0-9
,并假设它是id
,并且只有按名称搜索才会包含其他字符。