Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Problema com retorno da função method_missing

Estou com dificuldade em detectar qual o problema em meu código,o retorno que estou tendo é o seguinte:

#<Livro:0x9cb47d4>
#<Revista:0x9cb4770>
#<EBook:0x9cb4734>
true

A chamada que resulta neste retorno é esta:

puts estoque.livro_que_mais_vendeu_por_titulo
puts estoque.revista_que_mais_vendeu_por_titulo
puts estoque.ebook_que_mais_vendeu_por_titulo

puts estoque.respond_to?(:ebook_que_mais_vendeu_por_titulo)

E o a função method_missing está definida da seguinte maneira:

    def method_missing(name)
        matcher = name.to_s.match "(.+)_que_mais_vendeu_por_(.+)"

        if matcher
            tipo = matcher[1]
            campo = matcher[2].to_sym
            que_mais_vendeu_por(tipo, &campo)
        else
            super
        end
    end

Alguém tem alguma ideia de porque estou obtendo este retorno? Desde já agradeço a ajuda.

1 resposta
solução!

Depois de quebrar a cabeça mais um pouco encontrei o problema no meu código. O caso era que apenas com

puts estoque.livro_que_mais_vendeu_por_titulo

o programa me devolvia o objeto em si e não o que eu queria, que era o título do livro. A forma correta para fazer esta chamada era a seguinte:

puts estoque.livro_que_mais_vendeu_por_titulo.titulo