質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

1回答

365閲覧

Railsでselect boxの値に応じてバリデーションを変更したい

toshimi

総合スコア7

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

1クリップ

投稿2017/11/06 05:22

編集2022/01/12 10:55

現在、railsで新規会員登録のフォームを作成しています。
その際に会員登録時にselect boxで選択した値に応じて、登録可能なメールアドレスのバリデーションを変更したいのですが user modelにどういった設定を追加すれば良いのかで詰まっています。

想定としては例えば新規会員登録のフォーム内のselectboxで
aを選択した場合、@a.com以外のメールアドレスでの登録不可、
bを選択した場合、@b.com以外のメールアドレスでの登録不可のような分岐をしたいです。

userモデル VALID_EMAIL_REGEX = /.+@a.com/ validates :email, presence: true, uniqueness: true, format: { with: VALID_EMAIL_REGEX }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

こんにちは。Rails 初心者です。参考までに。
if / unless パラメータというのを解説書で見つけました。true, false 二つの選択しかできません。その条件に合ったときのみ、その validation で検査するもののようです。

validate :email, presence: { if: 'boolean_X?' }

validate :email, presence: { unless: 'boolean_Y?' }

という感じの表記です。
正規表現で以下のようにできると良いのですが。

validates :email, format: { with: VALID_EMAIL_yahoo_正規表現}(区切り){ if 'セレクトボックス = @yahoo.co.jp'}

validates :email, format: { with: VALID_EMAIL_google_正規表現}(区切り){ if 'セレクトボックス = @google.com'}

validates :email, format: { with: VALID_EMAIL_apple_icloud_正規表現}(区切り){ if 'セレクトボックス = @icloud.com'}

投稿2017/11/07 11:11

nekoyama7

総合スコア200

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toshimi

2017/11/09 08:39

調べてみます!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問