Se você estiver verificando se um objeto pode responder a uma série de métodos, faça algo como:
methods = [:valid?, :chase, :test]
def has_methods?(something, methods)
methods & something.methods == methods
end
o methods & something.methods
unirá as duas matrizes em seus elementos comuns / correspondentes. something.methods inclui todos os métodos que você está verificando, serão iguais. Por exemplo:
[1,2] & [1,2,3,4,5]
==> [1,2]
tão
[1,2] & [1,2,3,4,5] == [1,2]
==> true
Nessa situação, você desejaria usar símbolos, porque quando você chama .methods, ele retorna uma matriz de símbolos e, se você o usou ["my", "methods"]
, retornaria false.