sva*_*mov 7 ruby rest ruby-on-rails strong-parameters json-api
很长一段时间的Java开发人员 - ror的新手 - 我在Rails 4中构建了一个JSON REST API,我遇到了使用强参数的问题.当我对我的一个端点执行HTTP POST请求时,我希望我的控制器需要主对象,需要它的一些属性,如果存在某些其他属性,它也会返回它们.看到那些需要和允许方法返回哈希,我想知道什么是允许和要求同一对象的某些属性的最佳实践.我应该合并两个哈希吗?非常感谢您的投入,因为我花了很多时间研究这个问题.
kas*_*rnj 15
据我所知,我认为要走的路是,您只允许控制器中的参数,然后在模型中执行属性验证,而不是直接在参数控制器中执行.
强参数只有安全,一些恶意的人不会破解你的用户形式并插入像"role = admin"这样的东西.
据我所知,强参数功能并未设计为实际上需要存在某些参数而不是包含属性哈希的单个键(如名为user或同样的模型键).
您可以在模型中进行验证,如下所示:
class User < ActiveRecord::Base
validates :email, :first_name, :last_name, presence: true
end
Run Code Online (Sandbox Code Playgroud)
如果你使用像simple_form这样的东西,那么错误甚至会自动显示出来.
这里有一个人,在实际许可之前建议多个要求.我个人认为它非常难看.
def user_params
params.require(:user).require(:first_name)
params.require(:user).require(:last_name)
params.require(:user).permit(:first_name, :last_name)
end
Run Code Online (Sandbox Code Playgroud)