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?)