【问题标题】:What is the robust way to check form input values in Rails在 Rails 中检查表单输入值的可靠方法是什么
【发布时间】:2015-12-03 15:09:09
【问题描述】:

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

例如,我在视图中有用户变量。我不希望将日期类型属性user.start_date 修改为早于user.apply_date,我应该如何使保护变得健壮?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 model-view-controller


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      查看date_validator gem (https://github.com/codegram/date_validator)

      它允许这样的验证:

      validates :start_date, date: { after: :apply_date }

      【讨论】:

        【解决方案3】:

        在模型中进行,因为这是通常的方式。 Ruby on Rails 广泛支持模型错误,如果出现错误,您可以简单地重新显示记录以及该记录中的错误。

        您可以执行标准验证来确保值存在、唯一等。

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

        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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-04-06
          • 2017-09-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多