RailsによるアジャイルWebアプリケーション開発第4版
この書籍で勉強を行っているのだが、書かれた時期が2011年で、Railsのバージョンが3である。なので、現在のRails4で開発していたのだが、Modelのバリデーションでの正規表現を書いている際、以下のエラーが出現
The provided regular expression is using multiline anchors (^ or $), which may present a security risk. Did you mean to use \A and \z, or forgot to add the :multiline => true option?
ぐぐってみたら、全く同じところで躓いていた人がいたので、その記事を見て解決したので、変えたコードとともに掲載しておく
before
product.rb
class Product < ActiveRecord::Base
validates :title, :description, :image_url, presence: true
validates :price, numericality: {greater_than_or_equal_to: 0.01}
validates :title, uniqueness: true
validates :image_url, allow_blank: true, format: {
with: %r{\.(gif|jpg|png)$}i,
message: 'はGIF,JPG,PNG画像のURLでなければなりません'
}
end
Rails4では、^を\Aで、$を\Zで書く必要があるらしいので、
このコードで、_with: %r{.(gif|jpg|png|$}i_の記述は、$を\Zに変える必要があった。
after
product.rb
class Product < ActiveRecord::Base
validates :title, :description, :image_url, presence: true
validates :price, numericality: {greater_than_or_equal_to: 0.01}
validates :title, uniqueness: true
validates :image_url, allow_blank: true, format: {
with: %r{\.(gif|jpg|png)\z}i,
message: 'はGIF,JPG,PNG画像のURLでなければなりません'
}
end