ruby-on-rails - Rails 3 : Why integer field is not validated against regex?

标签 ruby-on-rails validation

Job 模型有一个整数 job_price 字段:

class CreateJobs < ActiveRecord::Migration
  def self.up
    create_table :jobs do |t|
      ...
      t.integer "job_price"
      ...
    end
  end
  ...
end

如果用户在 job_price 字段中键入字符串,我想显示一条错误消息,因此我添加了以下验证:
class Job < ActiveRecord::Base 
  validates_format_of :job_price, :with => /\A\d{0,10}\z/, 
                      :message => "^Job Price must be valid"
  ...
end

但是,即使我输入字符串,验证似乎也通过了。

任何想法为什么?

注意

我不得不在这里添加 :value => @job.job_price_before_type_cast:
f.text_field(:job_price, :maxlength => 10, 
             :value => @job.job_price_before_type_cast)

因为,否则,例如,如果我输入 abc5 ,然后提交表单,Rails 会将其转换为 5 (我猜是因为 job_price 被定义为整数)。

最佳答案

您可以确保它是一个整数并且在一个范围内:

validates_numericality_of :myfield, :only_integer => true
validates_inclusion_of :myfield, :in => 0..9999999999

关于ruby-on-rails - Rails 3 : Why integer field is not validated against regex?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5268338/

相关文章:

css - 旋转木马的缩放方式与背景图片不同

ruby-on-rails - 使用嵌套在模块中的关注点

java - Play Framework flash 变量添加逗号以形成数据

javascript - jQuery Validate() 和 Valid() 方法未定义或不起作用

java - Spring集成验证

ruby-on-rails - 从 JavaScript js.erb 文件调用 Ruby on Rails 辅助方法

ruby-on-rails - Redmine中的用户名

ruby-on-rails - 记录到 Redis for Rails 应用程序

javascript - 在 Javascript 中使用正则表达式验证输入

java - Struts2 i18n 消息