Mysql 名为Root的Rails 5列行为不正常

Mysql 名为Root的Rails 5列行为不正常,mysql,ruby-on-rails,ruby,ruby-on-rails-5,postman,Mysql,Ruby On Rails,Ruby,Ruby On Rails 5,Postman,我试图在Rails 5中创建一个restful API,我的一个类有一个名为root的属性。这个根属性导致了一些错误,我将提供一个示例。root在rails或ruby中是受保护的属性名吗 class ObjectsController < ApplicationController before_action only: %i[create] def create @object = Object.create(object_params) render json

我试图在Rails 5中创建一个restful API,我的一个类有一个名为root的属性。这个根属性导致了一些错误,我将提供一个示例。root在rails或ruby中是受保护的属性名吗

class ObjectsController < ApplicationController
  before_action only: %i[create]

  def create
    @object = Object.create(object_params)
    render json: @object
  end

  private


  def object_params
    params.require(:object).permit(:id, :root)
  end
我收到了邮递员寄来的下列邮件:

{
    "id": "manual_id",
    "root": null,
    "extension": "manual_extension"
}
但是在MySQL数据库中,root的值是manual\u root。
有人知道问题可能是什么。

解决方案是向模型添加属性别名,如下所示:

class Object < ApplicationRecord
  alias_attribute :object_root, :root
end
类对象
并在对象序列化程序类中使用此属性:

class ObjectSerializer < ActiveModel::Serializer
  attributes :id, :object_root
end
class ObjectSerializer

所以我的问题是使用活动模型序列化程序,我认为root是一个保留关键字。这里有一个类似的问题:

解决方案是向模型添加属性别名,如下所示:

class Object < ApplicationRecord
  alias_attribute :object_root, :root
end
类对象
并在对象序列化程序类中使用此属性:

class ObjectSerializer < ActiveModel::Serializer
  attributes :id, :object_root
end
class ObjectSerializer

所以我的问题是使用活动模型序列化程序,我认为root是一个保留关键字。这里有一个类似的问题:

在rails中找不到root是保留字的任何地方,但routes中有一个名为
root的命名空间,因此我建议不要使用此字。请阅读此处:。请执行以下操作:1<代码>将“*”*100放置参数将“*”*100
放置在ObjectsController第5行前后的3行中,并检查服务器控制台中星号之间的参数。您的参数出现问题。感谢@ARK的建议,我已经找到了解决方案,现在将添加答案。在rails中找不到root是保留字的任何地方,但路由中有一个名为
root
的命名空间,因此我建议不要使用此字。请阅读此处:。请执行以下操作:1<代码>将“*”*100放置参数将“*”*100
放置在ObjectsController第5行前后的3行中,并检查服务器控制台中星号之间的参数。你的参数有点可疑。谢谢@ARK的建议,我已经找到了解决方案,现在将添加答案。