Rails 4强参数

Ala*_*ano 3 ruby-on-rails ruby-on-rails-4

Rails 4处理强参数似乎很有趣:

def UsersController < ActionController::Base
  def update
    @user = current_user

    if @user.update_attributes(user_profile_parameters)
      redirect_to home_path, notice:  "Your profile has been successfully updated."
    else
      render action: "edit"
    end
  end

  private
  def user_profile_parameters
    params.require(:user).permit(:name, :password, :password_confirmation, :email)
  end
end
Run Code Online (Sandbox Code Playgroud)

我想知道,在Rails 3中是不是可能?是的,或许只有1行,而不是只有1行.但是,那里没有什么新东西,它只是一个手动创建的允许参数列表,事实上,它只是一个哈希,不是吗?或者它有更深层次的目的吗?

Sah*_*har 12

我想它在将rails 4作为单独的gem发布之前存在方式(之前的方式) https://github.com/rails/strong_parameters

rails 4默认情况下,如果你想将它与rails 3一起使用,只需在你的gemfile中获取gem即可开始:).

在gem的github链接上,他们也写了关于如何使用它的精彩文档,所以我想你应该没有任何问题使用它.

当然,它没有什么新东西,你可以通过编写自己的过滤器来手动进行过滤,如果哈希中的深层嵌套哈希和数组被动态创建(不固定),事情可能会变得有点棘手

""是的,而不是只有1行,它将需要3行"",这就是大多数宝石所做的,我们使用它们而不是重新发明轮子,只关注我们的业务逻辑.


Alt*_*eez 6

来自官方博客

我们正在探索一种处理Rails中的质量分配保护的新方法.或者实际上,它并不是一种真正的新方式,更多的是在你忘记的时候将一些醋混合在一起来提取既定的做法.

这种新方法是切片模式的提取,我们正在调用它的插件strong_parameters(已经作为gem使用).基本思想是将质量分配保护移出模型并进入其所属的控制器.

控制器的重点是控制用户和应用程序之间的流程,包括身份验证,授权以及作为访问控制的一部分.我们永远不应该在模型中加入质量分配保护,许多人很久以前就停止了切片模式或其中的变化.现在是时候提取这种模式并将其带给人们.

要在Rails 3中使用它,您可以使用强参数gem并按照其中的说明进行操作.