【问题标题】:Rails 4 Require and Permit MultipleRails 4 要求和允许多个
【发布时间】:2015-05-03 02:28:15
【问题描述】:
长期 Java 开发人员 - ror 新手 - 我正在 Rails 4 中构建 JSON REST API,但我遇到了使用强参数的问题。当我对我的一个端点执行 HTTP POST 请求时,我希望我的控制器需要主对象,需要它的一些属性,并且如果存在某些其他属性,它也返回这些。看到那些 require 和 permit 方法返回哈希值,我想知道允许和要求同一对象的某些属性的最佳实践是什么。我应该合并这两个哈希吗?非常感谢您的意见,因为我在这个问题上花费了相当长的时间。
【问题讨论】:
标签:
ruby-on-rails
ruby
rest
strong-parameters
json-api
【解决方案1】:
据我所知,我认为要走的路是,您只允许控制器中的参数,然后在模型中执行属性验证,而不是直接在控制器中对参数进行验证。
强大的参数只是为了确保某些不怀好意的人不会入侵您的用户表单并插入诸如“role=admin”之类的内容。
据我所知,强参数功能的设计并不是为了实际要求某些参数存在,而不是包含属性散列的单个键(例如称为用户的模型键或类似的)。
您可以像这样在模型中进行验证:
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