strong rails parse ruby-on-rails render-to-response

ruby on rails - rails - Ruby to_json: argumentos de los métodos



ruby object to json (2)

Estoy utilizando el método to_json en un objeto y trato de obtener el argumento :methods para que funcione. Tengo un método en mi modelo (Drop) llamado is_favorited_by_user? . Este método toma un argumento del usuario current_user y luego verifica si el usuario está a favor de la caída. ¿Cómo puedo pasar este argumento a través del método to_json .

render :json => @drops.to_json(:methods => :is_favorited_by_user?(current_user))


Los métodos to_json takes no pretenden ser los que toman argumentos, sino solo métodos "getter". (Normalmente los creados en base a sus atributos de db).

Ver ejemplos aquí, ninguno pasa argumentos:

http://apidock.com/rails/ActiveRecord/Serialization/to_json

Si quieres hacer algo personalizado, deberás crear un método que genere el hash de la información que deseas, y luego convertir ese hash a json.


Puede agregar el atributo current_user a su modelo y configurarlo antes de ejecutar to_json

attr_accessor :current_user def is_favorited_by_user?(user=nil) user ||= current_user # rest of your code end @drops.current_user = current_user render :json => @drops.to_json(:methods => :is_favorited_by_user?)