def method_missing(name,*args,&blk)
if args.empty? && blk.nil? && @attributes.has_key?(name)
@attributes[name]
else
super
end
end
说明:如果调用不存在的方法,那么将以方法名称作为第一个参数调用method_missing,然后调用给定方法的参数,如果给出了方法.
在上面我们说如果没有定义的方法被调用没有参数而没有块,并且哈希具有方法名称为key的条目,它将返回该条目的值.否则它会照常进行.