导轨,定制发现者
所以我希望能够使用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
,如果它包含其他字符,则只按名称搜索。