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
,並且只有在名稱中包含其他字符時才按名稱搜索。