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

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

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

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

Ruby on Rails

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

Q&A

解決済

2回答

4058閲覧

Railsでカスタムバリデータのエラー解決方法を教えてください。

koume

総合スコア458

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2017/12/27 07:18

編集2017/12/27 07:28

Rails5.1.3でWebアプリケーション制作の勉強をしています。customersテーブルのsponsor1カラムに対して
フォーム入力値がsponsor1カラムに存在しなければいけないというバリデーションをかけようとしています。
カスタムバリデータで実現しようとしました。
すると以下のようにカスタムバリデータの部分でエラーが出て困っています。

エラーの内容 ArgumentError in Visitor::CustomersController#new Unknown validator: 'ExistsValidator' Extracted source (around line #39): 37 38 validates :nickname, uniqueness: { allow_blank: true } 39 validates :sponsor1, exists: true----------------------ここでエラーが出ます。 40 41 before_save do 42 if birthday
app/validators/exists_validator.rb class ExistsValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) model = record.class unless model.where(attribute.to_sym => value).count > 0 record.errors.add(attribute, 'が存在していないニックネームとなっています。') end end end
app/models/customer.rb class Customer < ActiveRecord::Base validates :nickname, uniqueness: { allow_blank: true } validates :sponsor1, exists: true before_save do if birthday

以上となっていますが、エラーの解決方法がわからなくて困っています。
どなたか教えていただけないでしょうか?宜しくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

新しくフォルダを追加したときなど、サーバを起動したままでは正しく認識されないことがあります。

サーバ再起動を行っても同じ問題は起きますでしょうか。

投稿2017/12/27 07:39

maisumakun

総合スコア145184

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

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

koume

2017/12/27 07:41

いつも的確な回答ありがとうございます。サーバ再起動でうまく表示できました。今後ともよろしくお願いします。
maisumakun

2017/12/27 07:43

原始的ですが、「キャッシュクリア」とか「再起動」とかで解決するトラブルも、それなりにあるものです。
koume

2017/12/27 07:45

ありがとうございます。次回から一度再起動を心掛けるようにします。
guest

0

Unknown validator: 'ExistsValidator' とあるように、ExistsValidator が分からないとRailsに言われています。
具体的には、app/validators/exists_validator.rbの読み込みがされていないためです。

基本的にRails5であれば、app/以下のディレクトリは自動で読み込み対象となっており、
何もしなくても読み込まれるはずですが、お使いの環境ではそうなっていないようです。

もし、springが起動していたら停止してみてください。
こちらの環境では、springが起動していた時に反映されませんでした。
よく分からなくても、コンソールでbin/spring stopを実行すると停止できます。

それでもダメな場合は、この記事の解決策を試してみてください。
※私の環境では問題が起きていないため、この記事の内容は試していませんので無保証です
https://qiita.com/joooee0000/items/3ab0f3d791e0d0beb639

投稿2017/12/27 07:53

mingos

総合スコア4025

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

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

mingos

2017/12/27 07:54

回答を書いている間に解決していた・・・。 解決して良かったです。
koume

2017/12/27 07:56

いつも親切な回答ありがとうございます。エラーはサーバの再起動で解決できましたが、今後の参考にさせていただきます。これからもよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問