Mysql 名为Root的Rails 5列行为不正常
我试图在Rails 5中创建一个restful API,我的一个类有一个名为root的属性。这个根属性导致了一些错误,我将提供一个示例。root在rails或ruby中是受保护的属性名吗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
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的建议,我已经找到了解决方案,现在将添加答案。