2
所以我想用find_by_id_or_name
得到一个对象,我觉得我看到了另外一个像这样的问题,但是很难找到任何资源来制作我自己的发现器。导轨,定制发现者
所以我想用find_by_id_or_name
得到一个对象,我觉得我看到了另外一个像这样的问题,但是很难找到任何资源来制作我自己的发现器。导轨,定制发现者
您可以通过在您的模型中添加类方法来完成此操作,例如
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
,并且只有在名称中包含其他字符时才按名称搜索。