ruby-on-rails - 尝试升级 rails 依赖项会导致序列化程序引发错误 : undefined method `model_name' for Hash:Clas

标签 ruby-on-rails json serialization active-model-serializers

几个月前,我在已建立的 rails 应用程序上将 rails 升级到 5.2.4.2,并且对 rails 的依赖升级最少;该应用程序再次稳定下来,因此我们决定将所有 rails 依赖项升级到其最新的兼容版本。

现在,每当 Controller 对简单(非 db-model)类进行 json 渲染调用时,都会显示一条错误消息。

例子

这是序列化程序:

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

我可以对类进行猴子修补,但我宁愿有一个解决方案来允许序列化程序从这些简单的类中获取 model_name。

最佳答案

作为 active_model_serializers 的一部分引入的 JSON 序列化的根 key 似乎有一个硬性要求。 gem 0.10.10 版本(由捆绑升级自动设置);

我将这个 gem 降级到版本 0.10.9 并且序列化问题停止发生......

关于ruby-on-rails - 尝试升级 rails 依赖项会导致序列化程序引发错误 : undefined method `model_name' for Hash:Clas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61470730/

相关文章:

javascript - 未捕获的类型错误 : Cannot read property 'timestamp' of undefined

javascript - 如何过滤 JSON 对象 (JavaScript)

Android:退出在 onSave/onRecall 中序列化对象的 Activity 时出现致命异常 (NotSerializedException)

java - 使用 Jackson 序列化/反序列化不同类型的 map

ruby-on-rails - 尝试访问时不引人注意地为关联创建记录?

ruby-on-rails - 如何传递 simple_form 隐藏字段参数来创建操作

ruby-on-rails - 如何为截屏视频 #228 中 Ryan Bates 的助手编写 RSpec 测试?

java - 试图从 Java 解密 attr_encrypted 存储值

json - 从 JSON 获取 NSDate?

javascript - 使用最新 Ember Data 版本中的 RESTSerializer 格式化 JSON