6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rails3アプリをRails4で書いたら、正規表現でエラー出た

Last updated at Posted at 2014-09-15

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
6
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?