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