Я обновил рельсы до 5.2.4.2 по установленному приложению рельсов через несколько месяцев go с минимальными обновлениями зависимостей рельсов; Приложение снова стабилизировалось, поэтому мы решили обновить все зависимости rails до его последних совместимых версий.
Теперь, когда у контроллера есть json вызов рендеринга в простой (не db-модель) класс, сообщение об ошибке.
пример
Это сериализатор:
class Api::MessageResponseSerializer < ApplicationSerializer
self.version = 1
attributes :message, :changes
def message
self.object[:message]
end
def changes
self.object[:changes]
end
end
вызов
render :json => { :message => "Not Ready Yet"}, :serializer => Api::MessageResponseSerializer
Я получаю сообщение об ошибке:
NoMethodError:
undefined method `model_name' for Hash:Class
вызов
render :json => [{ :message => "Not Ready Yet"}], :serializer => Api::MessageResponseSerializer
Я получаю сообщение об ошибке:
NoMethodError:
undefined method `model_name' for Array:Class
вызов (я знаю, что это не правильно json, это просто для иллюстрации того, что возникает та же ошибка)
render :json => 1, :serializer => Api::MessageResponseSerializer
Я получаю сообщение об ошибке:
NoMethodError:
undefined method `model_name' for Integer:Class
Я могу обезопасить классы, но я бы предпочел решение, позволяющее сериализаторам получить имя модели из этих простых классов.