给Ruby 不同数组对象添加不同排序方法

有些时候我们需要给类的一个示例对象添加方法如下:

 class Person
 end 

 pedro = Person.new
 peter = Person.new

 # inject a method in the instances
 def pedro.hello_world; puts "Hola Mundo"; end

 def peter.hello_world; puts "Hello World"; end 

 pedro.hello_world #=> Hola Mundo
 peter.hello_world #=> Hello World


利用这个,就可以同样类型的User,根据不一样的数组添加不同的排序方法了
  employees  = User.find(:conditions => "career= employee")
  def employees.sort_by_attribute(sym)
    sort {|x, y| x.send(sym) <=> y.send(sym)}
  end

   manager = User.find(:conditions => "career = manager")
 def employees.sort_by_attribute(sym)
    sort {|x, y| y.send(sym) <=> x.send(sym)}
  end

你可能感兴趣的:(Ruby)