Ruby to_json: аргументы методов

Я использую to_json метод на объекте, и пытающийся добраться :methods аргумент работе. У меня есть метод на моей модели названное (Отбрасывание) is_favorited_by_user?. Этот метод берет аргумент current_user, и затем проверки, чтобы видеть, является ли отбрасывание favorited пользователем. Как я могу передать этот аргумент через to_json метод.

render :json => @drops.to_json(:methods => :is_favorited_by_user?(current_user))
26
задан JJD 2 February 2013 в 17:12
поделиться

2 ответа

Вы можете добавить атрибут current_user в свою модель и установить его перед выполнением 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?)
46
ответ дан 28 November 2019 в 07:06
поделиться

Методы to_json не предназначены для того, чтобы принимать аргументы, а просто "getter" методы. (Обычно они создаются на основе атрибутов вашей базы данных)

Смотрите примеры здесь, ни один из них не принимает аргументы:

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

Если вы хотите сделать что-то свое, вам нужно создать метод, который создает хэш нужной вам информации, а затем конвертирует этот хэш в json.

4
ответ дан 28 November 2019 в 07:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: