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中提到的模型的预览。