Ruby to_json: методы аргументы
Я использую to_json
метод на объект, и пытается получить :methods
аргумент для работы. У меня есть метод на моей модели (Drop) под названием is_favorited_by_user?
, Этот метод принимает аргумент current_user
, а затем проверяет, одобрено ли удаление пользователем. Как я могу передать этот аргумент через to_json
метод.
render :json => @drops.to_json(:methods => :is_favorited_by_user?(current_user))
2 ответа
Можете добавить current_user
attribute to your model and set it before executing 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?)
Методы to_json
take не предназначены для аргументов, а только для методов "getter". (Обычно они создаются на основе ваших атрибутов БД.)
Смотрите примеры здесь, никто не передает аргументы:
http://apidock.com/rails/ActiveRecord/Serialization/to_json
Если вы хотите сделать что-то нестандартное, вам нужно создать метод, который создает хеш информации, который вы хотите, а затем преобразовать этот хеш в json.