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

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

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

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

Ruby on Rails

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

Q&A

2回答

1865閲覧

[Rails][初心者]validationの仕方を教えて欲しい

7hikolin

総合スコア124

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2016/03/25 08:11

編集2016/03/25 08:35

errorを使ってみようと思ったのですが、いまいちよくわかりません。

目的:必要な情報がすべてデータベースに入っていなかったら、エラーメッセージを返して処理を中断する

こんな感じにしたいです。大雑把で申し訳ないですが、よくわからないもので。よろしくお願いします。

[補足]もしかしてerrorはActiveRecodeにしかつけられないものなんですか?

ruby

1#controller 2 3if CreateCard.images_validation(create_card_id).error.size > 0 4 redirect_to :index and return 5end

ruby

1#model 2 3Class CreateCard < ActiveRecord::Base 4 def self.images_vaidation(create_card_id) 5 images = Image.where(create_card_id: create_card_id) 6 images.each do |image| 7 if image.image_url.blank? 8 #error.add :url_empty的なerrorを追加するもの 9 end 10 end 11 end 12end
#view エラーメッセージがあったら表示する

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

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

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

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

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

guest

回答2

0

次の記事を読んでみてください。

...
このガイドでは、Active Recordのバリデーション (検証: validation) 機能を使用して、オブジェクトがデータベースに保存される前にオブジェクトの状態を検証する方法について説明します。
...

...
ユーザからの入力値チェックは、一般にクライアント側とサーバ側の両方で行います。クライアント側のチェックは、例えばブラウザのJavascriptによって行うことができます。これは悪意のないユーザの操作性向上のために行います。ここでは、悪意あるユーザがJavascriptを無効にして不正なデータを送信してきた場合などに備えサーバ側でチェックを行うためのRailsのバリデーション機能の使用方法を記載します。
...

投稿2016/03/25 11:35

katoy

総合スコア22324

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

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

0

まず大前提として、データはデータベースに入れるに、正しい形を担保しておきましょう。Railsのバリデーションもそのためのシステムです。

他のアプリも読み書きするとか、既存のデータベースを流用することになったという例なら別として、基本的にデータベースへ書き出す時点で整合性を確保するのが鉄則です。

入力時点で検出すれば修正も利きますが、いったんDBに入ったデータを読みだす段でおかしなことになっていても、打つ手は限られます。

投稿2016/03/25 08:22

maisumakun

総合スコア145183

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

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

7hikolin

2016/03/25 08:31

そうなんですが、今回は既存のものを改造するのでこうなってしまっているのです…
7hikolin

2016/03/25 08:38

もしかして、errorはActiveRecodeで取り出してきたものにしかaddできないんでしょうか?ちょっとerror以外の方法で、trueかfalseを返すように考えてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問