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"),而您的应用程序将毫无顾虑地欣然接受它们。

如果您曾经将参数转换为散列,那么您就做出了错误的决定。您永远不应该将原始参数从控制器传递到模型中。强大的参数在那里保护你。如果 permitrequire 白名单不起作用,Rails 或您的 ORM 已损坏。停下来,找出哪个坏了,并将其报告给相应的项目。