一个长期的 Java 开发人员 - ror 新手 - 我正在 Rails 4 中构建一个 JSON REST API,我遇到了使用强参数的问题。当我对我的一个端点执行 HTTP POST 请求时,我希望我的控制器需要主对象,需要它的一些属性,并且如果存在某些其他属性,它也返回这些属性。看到那些 require 和 permit 方法返回哈希值,我想知道允许和要求同一对象的某些属性的最佳实践是什么。我应该合并这两个哈希吗?非常感谢您的意见,因为我花了很长时间处理这个问题。
问问题
6815 次
1 回答
15
据我所知,我认为要走的路是,您只允许控制器中的参数,然后在模型中执行属性验证,而不是直接在控制器中对参数进行验证。
强大的参数只是为了确保某些不怀好意的人不会破解您的用户表单并插入诸如“role = admin”之类的内容。
据我所知,强参数功能的设计并不是为了实际要求存在某些参数,而不是包含属性散列的单个键(例如称为用户的模型键或类似的键)。
您可以像这样在模型中进行验证:
class User < ActiveRecord::Base
validates :email, :first_name, :last_name, presence: true
end
如果你使用 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
于 2015-05-03T02:52:14.530 回答