如何验证rails 4中的请求参数,如laravel 5?

时间:2015-03-08 00:10:29

标签: ruby-on-rails ruby-on-rails-4 ruby-on-rails-3.2 laravel-5

我有一个动作控制器来验证来自视图的参数。

  def duplicate
    #params to be validated
    params = params[:group_to_duplicate]

    #params have to be validated to avoid method 'find' for some reason
    group = Group.find(params[:id])

    #validate to avoid this 'if'
    if group
      group.duplicate params
      notice = 'Some message'
    else
      notice = 'Some other message'
    end
    redirect_to groups_path, notice: notice

  end

如何验证来自视图的请求参数,例如laravel 5 enter link description here

2 个答案:

答案 0 :(得分:0)

在大多数情况下,您不必在控制器中验证请求参数。

模型表单验证的最佳实践(必需,唯一,长度,最大等)是在模型中定义验证即/models/group.rb,并使用表单库等as simple_form,自动处理您定义的模型验证。

例如,在您的group.rb中,您将拥有:

class Group < ActiveRecord::Base
  validates :group, presence: true
end

如果您绝对需要在控制器中进行验证,请使用操作控制器过滤器:http://guides.rubyonrails.org/action_controller_overview.html#filters

参考文献:

http://guides.rubyonrails.org/active_record_validations.html https://github.com/plataformatec/simple_form

答案 1 :(得分:0)

有时候,您确实需要验证请求参数,而不是模型。

例如

API。您通常需要验证给定的参数。也许您需要一个返回股票行情的API的日期范围。

报价模型是有效的,但是为了正确获取报价模型,您需要知道用户所需的范围,因为您不允许他们拥有整个报价历史记录。这样的事情。

对于搜索表单也是如此。也许您有一个表单,要求用户在搜索雇员之前输入姓氏。

在这些情况下,您可以使用表单或视图对象来帮助进行验证。 这是有关表单对象的快速文章: https://robots.thoughtbot.com/activemodel-form-objects

我也一直在看这个。我将在有空的时候试一试: https://github.com/nicolasblanco/rails_param