前提
RailsでYouTube動画を投稿するWebサイトを作成しております。
YouTubeのURLを指定し投稿する形式なのですが、ユーザはPCのみではなく、スマホアプリからの投稿も考慮したいと考えています。
実現したいこと
1つのカラムに2つのパターンの正規表現のバリデーションをかけたい。
なぜなら、YouTubeブラウザ版
とYouTube iOSアプリ版
で、取得できるURLの形式が異なるためです。
詳細
投稿に用いるモデルであるpost.rb
に以下の記述をしました。とりあえず、サーバの起動は正常におこなえました。
Ruby
1 VALID_YOUTUBE_URL_BROWSER = /(\Ahttps://www.youtube.com/watch?v=)+[\w+-]{11}\z/ 2 VALID_YOUTUBE_URL_MOBILE = /(\Ahttps://youtu.be/)+[\w+-]{11}\z/ 3 validates :youtube_url, format: { with: VALID_YOUTUBE_URL_BROWSER, message: "は公式サイトから取得してください"} 4 validates :youtube_url, format: { with: VALID_YOUTUBE_URL_MOBILE, message: "は公式サイトから取得してください"}
しかし、入力フォームから、値を入力すると、今まで成功していたVALID_YOUTUBE_URL_BROWSER
でもエラーが出るようになりました。
バリデーションの指定方法が誤っているのか、それとも正規表現のバリデーションは複数行えないのか。もし分かる方いらっしゃいましたら、お力添えお願いします。
備考
- ブラウザから取得したYouTubeのURLの形式
https://www.youtube.com/watch?v=WUaRHinvlv4
- スマホYouTubeアプリから取得したYouTubeのURLの形式(画像下部の
コピー
を押すとクリップボードにURLがコピーされる)
https://youtu.be/WUaRHinvlv4
バージョン
- Rails 5.2.4
- Ruby 2.7.2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/14 04:44
2020/06/14 04:58
2020/06/14 05:01