开发者

Rails, custom finders

开发者 https://www.devze.com 2023-01-12 17:07 出处:网络
So I want to be able to get an object using find_by_id_or_name, I 开发者_运维百科feel like I saw another question like this but am trouble finding any resources on making my own finder.You can do this

So I want to be able to get an object using find_by_id_or_name, I 开发者_运维百科feel like I saw another question like this but am trouble finding any resources on making my own finder.


You can do this by adding a class method to your model e.g.

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

You will then by able to do

Model.find_by_id_or_name(id_or_name)

You can customise the method slightly depending on your requirements e.g. if you want to try by id first and then by name you could use Model.exists? first to see if there is matching record before doing a find_by_name. You could also look if id_or_name consisted of characters 0-9 and assume that was an id and only search by name if it contained other characters.

0

精彩评论

暂无评论...
验证码 换一张
取 消