简体   繁体   English

如何在Rails中使用验证包含

[英]How use validation inclusion in rails

class Stadium < ActiveRecord::Base
validates :name, :presence => true
validates :city, :presence => true
validates :contructiondate, :presence => true
validates :capacity, :presence => true
validates :image, :presence => true

validates :name, :uniqueness => true
validates :city, :uniqueness => true
validates :capacity, :numericality => { :only_integer => true, :greater_than_or_equal_to => 0 }
validates :image, :format => { :with => /^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/ix, :message => "Uniforme Invalido", :multiline => true }
validates :city, :inclusion => { :in => %w(Belo Horizonte Brasilia Curitiba Fortaleza Manaus Natal Recife Rio de Janeiro Salvador Sao Paulo),  :message => "%{value} no esta permitido" }

validate :mydate_is_date?

def mydate_is_date?
    errors.add(:contructiondate, 'must be a valid date') if !contructiondate.is_a?(Date)

end
end

I have a problem with inclusion, It works perfectly with words like Natal, Manaus, Salvador, but with words like "Sao Paulo", "Rio de Janeiro" does not work, How could I fix it? 我对包容性有疑问,它与Natal,Manaus,Salvador等字词完美搭配,但对“ Sao Paulo”,“ Rio de Janeiro”等字词无效,我该如何解决?

Thanks 谢谢

Try escaping the spaces with a backslash \\ . 尝试使用反斜杠\\转义空格。

Without escaping: 不逃避:

> %w(Belo Horizonte Brasilia Curitiba Fortaleza Manaus Natal Recife Rio de Janeiro Salvador Sao Paulo)
=> ["Belo",
 "Horizonte",
 "Brasilia",
 "Curitiba",
 "Fortaleza",
 "Manaus",
 "Natal",
 "Recife",
 "Rio",
 "de",
 "Janeiro",
 "Salvador",
 "Sao",
 "Paulo"]

With escaping: 转义:

> %w(Belo Horizonte Brasilia Curitiba Fortaleza Manaus Natal Recife Rio\ de\ Janeiro Salvador Sao\ Paulo)                                        
=> ["Belo",
 "Horizonte",
 "Brasilia",
 "Curitiba",
 "Fortaleza",
 "Manaus",
 "Natal",
 "Recife",
 "Rio de Janeiro",
 "Salvador",
 "Sao Paulo"]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM