Rails 5 和 RethinkDB 存储数据时出错
Rails 5 and RethinkDB Error storing data
Rails/Rethinkdb/nobrainer 中的简单博客应用程序gem
型号
class Post
include NoBrainer::Document
include NoBrainer::Document::Timestamps
field :title, :type => String
field :body, :type => Text
控制器
def post_params
params.require(:post).permit(:title, :body)
end
与 Rails 一起工作正常 4 在 Rails 中相同 5 错误:
一些想法??
To assign attributes, please pass a hash instead of `ActionController::Parameters'
根据您的错误消息 To assign attributes, please pass a hash instead of 'ActionController::Parameters'
我假设您的应用中某处有一个代码:
Post.create(post_params)
使用 to_h
方法转换为散列:
Post.create(post_params.to_h)
这是 NoBrainer 的问题。它已在当前 git HEAD 版本中修复,并将包含在下一个更新版本中。
不要 通过将 post_params
转换为之前建议的散列来简单地绕过强参数;这将允许任何用户提交他们希望的任何表单字段,并且您的应用程序将盲目地接受它。这是一个巨大的安全问题,因为任何攻击者现在都可以传递任意列数据(例如,"is_admin = 1"),而您的应用程序将毫无顾虑地欣然接受它们。
如果您曾经将参数转换为散列,那么您就做出了错误的决定。您永远不应该将原始参数从控制器传递到模型中。强大的参数在那里保护你。如果 permit
和 require
白名单不起作用,Rails 或您的 ORM 已损坏。停下来,找出哪个坏了,并将其报告给相应的项目。
Rails/Rethinkdb/nobrainer 中的简单博客应用程序gem
型号
class Post
include NoBrainer::Document
include NoBrainer::Document::Timestamps
field :title, :type => String
field :body, :type => Text
控制器
def post_params
params.require(:post).permit(:title, :body)
end
与 Rails 一起工作正常 4 在 Rails 中相同 5 错误:
一些想法??
To assign attributes, please pass a hash instead of `ActionController::Parameters'
根据您的错误消息 To assign attributes, please pass a hash instead of 'ActionController::Parameters'
我假设您的应用中某处有一个代码:
Post.create(post_params)
使用 to_h
方法转换为散列:
Post.create(post_params.to_h)
这是 NoBrainer 的问题。它已在当前 git HEAD 版本中修复,并将包含在下一个更新版本中。
不要 通过将 post_params
转换为之前建议的散列来简单地绕过强参数;这将允许任何用户提交他们希望的任何表单字段,并且您的应用程序将盲目地接受它。这是一个巨大的安全问题,因为任何攻击者现在都可以传递任意列数据(例如,"is_admin = 1"),而您的应用程序将毫无顾虑地欣然接受它们。
如果您曾经将参数转换为散列,那么您就做出了错误的决定。您永远不应该将原始参数从控制器传递到模型中。强大的参数在那里保护你。如果 permit
和 require
白名单不起作用,Rails 或您的 ORM 已损坏。停下来,找出哪个坏了,并将其报告给相应的项目。