Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails中检查表单输入值的健壮方法是什么_Ruby On Rails_Ruby On Rails 4_Model View Controller - Fatal编程技术网

Ruby on rails 在Rails中检查表单输入值的健壮方法是什么

Ruby on rails 在Rails中检查表单输入值的健壮方法是什么,ruby-on-rails,ruby-on-rails-4,model-view-controller,Ruby On Rails,Ruby On Rails 4,Model View Controller,我有一个表单,希望检查表单输入值。如果值通过检查,则值可以存储在DB中。我知道我可以在视图、控制器甚至模型中检查它们。我认为最好的方法可能是在所有三个部分中检查它们,并且在提交之前只在视图中检查它们可能会导致问题,因为其他人可以手动修改并将请求发送给控制器 例如,我有一个用户变量在视图中。我不希望日期类型属性user。开始日期被修改为早于user。应用日期,我应该如何使保护健壮?您要寻找的是模型验证:在模型中执行,这是通常的方式。RubyonRails广泛支持模型错误,如果有错误,您可以简单地重

我有一个表单,希望检查表单输入值。如果值通过检查,则值可以存储在DB中。我知道我可以在视图、控制器甚至模型中检查它们。我认为最好的方法可能是在所有三个部分中检查它们,并且在提交之前只在视图中检查它们可能会导致问题,因为其他人可以手动修改并将请求发送给控制器


例如,我有一个用户变量在视图中。我不希望日期类型属性
user。开始日期
被修改为早于
user。应用日期
,我应该如何使保护健壮?

您要寻找的是模型验证:

在模型中执行,这是通常的方式。RubyonRails广泛支持模型错误,如果有错误,您可以简单地重新显示记录和该记录中的错误

您可以通过标准验证来确保值存在、唯一等

您还可以在模型中进行自定义验证

validate :start_date_cannot_be_before_apply_date

def start_date_cannot_be_before_apply_date
  if start_date < apply_date
    errors.add(:start_date, "can't be before the apply date")
  end
end
验证:开始日期不能早于应用日期
def开始日期不能早于应用日期
如果开始日期<应用日期
错误。添加(:开始日期,“不能早于应用日期”)
结束
结束

查看
日期确认器
gem()

它允许进行如下验证:

验证:开始日期,日期:{after::apply_date}