¿Cómo anular to_json en Rails?

Actualizar:

Este problema no fue explorado adecuadamente. El verdadero problema radica enrender :json.

El primer código pegado en la pregunta original arrojará el resultado esperado. Sin embargo, todavía hay una advertencia. Ver este ejemplo:

render :json => current_user

esNO lo mismo que

render :json => current_user.to_json

Es decir,render :json no llamará automáticamente alto_json Método asociado con el objeto Usuario.De hecho, Sito_json se anula en elUser modelo,render :json => @user generará elArgumentError descrito abajo.

resumen
# works if User#to_json is not overridden
render :json => current_user

# If User#to_json is overridden, User requires explicit call
render :json => current_user.to_json

Todo esto me parece tonto. Esto parece estar diciéndome querender en realidad no está llamandoModel#to_json cuando escriba:json está especificado. ¿Alguien puede explicar lo que realmente está pasando aquí?

Cualquier genio que pueda ayudarme con esto probablemente pueda responder a mi otra pregunta:Cómo construir una respuesta JSON combinando @ foo.to_json (opciones) y @ bars.to_json (opciones) en Rails

Pregunta original:

He visto otros ejemplos en SO, pero ninguno hace lo que estoy buscando.

Lo estoy intentando:

class User < ActiveRecord::Base

  # this actually works! (see update summary above)
  def to_json
    super(:only => :username, :methods => [:foo, :bar])
  end

end

Me estoy poniendoArgumentError: wrong number of arguments (1 for 0) en

/usr/lib/ruby/gems/1.9.1/gems/activesupport-2.3.5/lib/active_support/json/encoders/object.rb:4:in `to_json

¿Algunas ideas?

Respuestas a la pregunta(4)

Su respuesta a la pregunta