诗歌rails之 method_missing
当ruby试着去调用一个不存在的方法时( 或者,一个对象发送了一个不能被处理的消息 ),就可能会引起错误并造成程序的终止。你可能更喜欢你编写的程序能够从这样的错误中恢复过来。可以使用method_missing方法,该方法接受一 个方法名,如果该方法不存在,method_missing方法就会被调用:
method_missing也可以处理还有参数的根本就不存在的方法:
method_missing方法甚至可以动态地创建没有定义的方法:
- def method_missing( methodname )
- puts( "#{methodname} does not exist" )
- end
- xxx #=>xxx does not exist
- def method_missing( methodname, *args )
- puts( "Class #{self.class} does not understand:
- #{methodname}( #{args.inspect} )" )
- end
- def method_missing( methodname, *args )
- self.class.send( :define_method, methodname,
- lambda{ |*args| puts( args.inspect) } )
- end
莫愁前路无知己,天下无人不识君。