Я использую to_json
метод на объекте, и пытающийся добраться :methods
аргумент работе. У меня есть метод на моей модели названное (Отбрасывание) is_favorited_by_user?
. Этот метод берет аргумент current_user
, и затем проверки, чтобы видеть, является ли отбрасывание favorited пользователем. Как я могу передать этот аргумент через to_json
метод.
render :json => @drops.to_json(:methods => :is_favorited_by_user?(current_user))
Вы можете добавить атрибут 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?)
Методы to_json
не предназначены для того, чтобы принимать аргументы, а просто "getter" методы. (Обычно они создаются на основе атрибутов вашей базы данных)
Смотрите примеры здесь, ни один из них не принимает аргументы:
http://apidock.com/rails/ActiveRecord/Serialization/to_json
Если вы хотите сделать что-то свое, вам нужно создать метод, который создает хэш нужной вам информации, а затем конвертирует этот хэш в json.