【发布时间】:2013-11-23 18:38:46
【问题描述】:
我正在尝试验证 Rails 4 应用程序中的某些日期,但它不起作用。
我查看了许多类似的代码示例,例如 Same custom validation for several fields in Rails 和 http://railscasts.com/episodes/211-validations-in-rails-3。 (还有其他更复杂的)。我不明白为什么我的例子不起作用。为了找出问题所在,我删除了实际的验证代码,并留下了一个存根,因为验证似乎没有运行,这似乎是基本问题(或至少是第一个问题)。
这是验证器中的代码(在 app/validators/custom_date_validator.rb 中
class CustomDateValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
puts "Custom validator was called"
record.errors[attribute] << "Date Not Valid" unless false
end
end
这是模型中的代码:
class CaseInformation < ActiveRecord::Base
include ApplicationHelper
validates :started, :custom_date => true
错误信息是:
argument out of range
Extracted source (around line #104):
respond_to do |format|
104 if ( @case_information.update_attributes(params[:case_information]) && @case_information.update_attributes(params[:law_guardians]) )
format.html { redirect_to @case_information, notice: 'Case information was successfully updated.' }
format.json { head :no_content }
错误是(我认为)故意的,我输入了“2012 年 1 月 123 日”的日期,但验证器没有发现它。好吧,实际上我删除了所有验证代码并让(我认为)验证器写入日志,因为验证器似乎甚至没有运行,至少,日志中没有任何内容显示它运行。
我知道正在找到验证器代码,因为在模型中,如果我稍微更改验证名称,我会收到无法找到验证的错误。
我敢肯定,这是一个非常愚蠢的菜鸟问题,感谢您的耐心。
谢谢。
【问题讨论】:
标签: ruby-on-rails-4 customvalidator