【发布时间】:2020-01-17 15:50:05
【问题描述】:
我正在尝试在 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
当我发布到 /objects/ 类似于以下内容:
{"object": {"id": "manual_id" , "root": "manual_root"}}
我在 Postman 中返回以下内容:
{
"id": "manual_id",
"root": null,
"extension": "manual_extension"
}
但在 MySQL 数据库中,root 的值是 manual_root。 有没有人知道这个问题可能是什么。
【问题讨论】:
-
在rails中找不到root是保留字的任何地方,但路由中有一个名为
root的命名空间,所以我建议不要使用这个词。 -
请执行以下操作: 1.
puts "*"*100 puts params puts "*"*100在 ObjectsController 中第 5 行之前和之后的 3 行中,并检查服务器控制台中星号之间的参数。你的参数发生了一些可疑的事情。 -
感谢@ARK 的建议我已经找到了解决方案,现在将添加答案。
标签: mysql ruby-on-rails ruby ruby-on-rails-5 postman