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

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

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

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

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Q&A

1回答

507閲覧

jsonファイルを読み込んだ際に、値チェック(型、長さ)をする良い方法はありますか?

hiepita1

総合スコア37

Ruby on Rails 5

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

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

0グッド

0クリップ

投稿2018/02/02 08:22

お世話になっております。
ブラウザからjsonファイルをアップロードし、中身を一時テーブルにinsertする機能を作成しようとしています。

この際に、insert前に値のチェックを行い、問題があれば画面にエラーを表示したいと考えています。
現在は「json_schema_rails」のgemを使用してチェックをしているのですが、速度が遅いという点と、吐き出されるエラーメッセージ
が英語になってしまうという2点の問題から、違う方法がないかを探しています。
DBはpostgresqlを使用しています。

①他のライブラリを使用
②Railsのモデルでvalidate
③insert時にDBのカラム制約でエラーを拾う
など複数の方法が考えられると思うのですが、速度面とエラーの表示をすることを考えると、どのような方法が望ましいでしょうか?
よろしくお願い致します。

//読み込むjson [ { //すべてOK "not_nul": 1, "max_len5": "aiueo", "min_len3": "123", "number_only_int": 123, "number_only_string": "123" }, { //not_nullがエラー "not_nul": '', "max_len5": "aiueo", "min_len3": "123", "number_only_int": 123, "number_only_string": "123" }, { //max_lenがエラー "not_nul": 1, "max_len5": "aiueoka", "min_len3": "123", "number_only_int": 123, "number_only_string": "123" }, { //min_lenがエラー "not_nul": 1, "max_len5": "aiueo", "min_len3": "12", "number_only_int": 123, "number_only_string": "123" }, { //number_only_intがエラー "not_nul": 1, "max_len5": "aiueo", "min_len3": "123", "number_only_int": "123", "number_only_string": "123" }, { //number_only_stringがエラー "not_nul": 1, "max_len5": "aiueo", "min_len3": "123", "number_only_int": 123, "number_only_string": "aiu" } ] 画面に出したいエラー文 下記のエラーがあります。 1行目: not_nulが入力されていません。 2行目: max_lenが最大文字数を超えています。 3行目: min_lenが最小文字数に足りません。 4行目: number_only_intの型が違います。 5行目: number_only_stringに入力可能なのは数値のみです。

Rails 5
postgresql 9.6

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

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

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

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

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

guest

回答1

0

validationをフロントエンドで持ってしまうのが良いと思います

validationルールが散らばってしまい良くないとは思うんですが、速度面で一番早いのはアップロードした段階でvalidationをかけた方が一番早いです

よくやるのはフロントエンドでかけるのは最低限のチェックで済ませてしまい(値の入力がされているか、最大値、最低値が超えてないか、型のチェック)、サーバサイドでがっつりかける(整合性のチェック)、というようなことはやります

投稿2018/02/09 07:05

orange-lion

総合スコア426

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

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

hiepita1

2018/02/13 01:52

ご回答ありがとうございます。 ご指摘の通り、クライアントで最低限のチェックを行い、サーバーでがっつりチェックを行うつもりでいます。 現段階の問題としては、jsonファイルのサーバーサイドのチェック方法で、json schemaを使用すると速度が遅いので、よりより方法がないかと思い質問させていただいてます。(jsonschemaを使用すると、桁数や型チェックなどの最小限のチェックですら時間がかかっています。)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問