Ruby on rails 将rails 4.2.8升级到5.0.x

Ruby on rails 将rails 4.2.8升级到5.0.x,ruby-on-rails,json,ruby,render,upgrade,Ruby On Rails,Json,Ruby,Render,Upgrade,我正在将我用rails 4.2.8构建的旧rails应用程序升级到rails 5.0.x(rails 5.0.1和5.0.7的试用版也有同样的问题) 基本rails应用程序升级顺利,我的基本rails应用程序运行良好。然而,有一个内置angular的前端应用程序,也有一个内置NodeJ的前端应用程序,NodeJ有一些通信通道,如api和一些控制器,用于与基本rails应用程序通信 我在线上的其中一个控制器出现问题: render(:json => result, methods: [

我正在将我用
rails 4.2.8
构建的旧rails应用程序升级到
rails 5.0.x
(rails 5.0.1和5.0.7的试用版也有同样的问题)

基本rails应用程序升级顺利,我的基本rails应用程序运行良好。然而,有一个内置angular的前端应用程序,也有一个内置NodeJ的前端应用程序,NodeJ有一些通信通道,如api和一些控制器,用于与基本rails应用程序通信

我在线上的其中一个控制器出现问题:

  render(:json =>  result, methods: [:mdobjectsAttributes, :blockAttributes, :entityFormTemplateBlock], :status => 200, :errorCode => 0, :layout => false)
错误是:

NoMethodError (undefined method `mdobjectsAttributes' for #Formtemplateblock:0x000055d7ff2a6480>):
因此,我知道我需要更新/更改attr_可访问和attr_保护特性,以支持强参数。我在模型中看到了它们,但我不确定这是否对响应方法有影响。。。我确实更新了模型,改为使用
ApplicationRecord
ActiveRecord::Base

此外,我还将
jbuilder
更新为最新版本
2.11.x

那么,对于解决方案有什么建议吗?显然我错过了什么


以下是显示错误的模型和控制器的预览。

在调查问题2-3天后,我通过向所需模型添加缺少的方法作为属性访问器来修复它,如下所示:

attr_accessor  :blockAttributes, :entityFormTemplateBlock...
因为我在15个模型中遇到了问题,所以我必须通过创建ruby模块来优化我的修复,并将其包含到所需的模型中

rails app/lib/custom\u attr\u accessors.rb中的模块示例

module CustomAttrAccessors
    attr_accessor  :blockAttributes, :entityFormTemplateBlock..
end
最后,将该模块包括在模型中:

class Formtemplate < ApplicationRecord
  include CustomAttrAccessors
.....
class Formtemplate
这与强参数无关。强参数仅用于在创建和更新资源时,将传入参数列为白名单,以便向模型实例进行批量分配。这与JSON呈现毫无关系。实际上很难得出任何结论,因为我们不知道
:mdobjectsAttributes,:blockAttributes
应该来自何处,也不知道为什么命名如此非rubyeske.legacy项目。。。有那么多乱七八糟的。。我正在尝试将ruby的版本从2.4.2升级到2.5.1,rails的版本从4.2.8升级到5.xx。。。。完成了大量的工作,基本应用程序运行良好,只有几个控制器和动作看起来像上面那样。方法突然丢失如果我将代码还原到以前的版本,它工作得很好。如果你在git中做了分支,我会隐藏或提交你的更改,然后签出任何正在工作的标记/分支,并找到有问题的方法。Github在这方面也非常有用。camelCase告诉我,它更可能是一些应用程序代码,而不是gem或框架,因此只能在给出所述代码的情况下使用。是的,我正在使用分支。该应用程序是docker设置的一部分。因此,当我将分支更改为较旧版本的代码时,它工作得很好,就在我已经对ruby和rails进行了一些升级的分支上,我遇到了这个问题。@max这里是error and controller中提到的模型的预览。