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

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

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

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

バリデーション

Validationとは特定の入力データが、求められた条件に当てまっているかをチェックするために使われます。

Q&A

解決済

2回答

3719閲覧

ネストしている子モデルのバリデーションエラー文を日本語にしたい(Rails)

miSaito

総合スコア16

Ruby on Rails

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

バリデーション

Validationとは特定の入力データが、求められた条件に当てまっているかをチェックするために使われます。

0グッド

0クリップ

投稿2020/08/14 04:15

編集2020/08/15 02:50

前提・実現したいこと

現在fields_forでネストした子モデルに保存するといった実装をしているのですが、子モデルのバリデーションに引っかかったときに出るバリデーションエラーのカラム名をja.ymlにて日本語にできず困っています。
子モデル: price
カラム名: service, price

バリデーション
validates :service, :price, presence: true

バリデーション時のエラー文
Prices serviceを入力してください
Prices priceを入力してください

自分で調べたことや試したこと

ja.ymlにて以下のように試しましたができませんでした。

ja: activerecord: attributes: person: name: 名前 gender: 性別 contact: 連絡先 sample: サンプル comment: コメント price/service: サービス名 price/price: 値段 price_service: サービス名 price_service: 値段
#priceモデル class Price < ApplicationRecord belongs_to :person, optional: true validates :service, :price, presence: true validates :service, length: { maximum: 30 } end #personモデル class Person < ApplicationRecord has_many :prices, dependent: :destroy accepts_nested_attributes_for :prices, allow_destroy: true validates :name, :gender, :contact, :sample, :comment, presence: true end

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

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

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

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

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

winterboum

2020/08/14 04:47

親子関係がよくわからないので、modelの関連の定義を載せてください。 あと、validationのところも。 整理しないでcodeそのままが良いです。
miSaito

2020/08/15 02:51

遅くなり申し訳ありません。修正しました。
winterboum

2020/08/15 03:10

人がたくさん価格をもつという世界が良くわからん、、、、 ああ。いろんなサービスができてその価格か。  違和感ありますが理解はできました。 さて、ちと考えます
winterboum

2020/08/15 03:12

ところでrailsは6ですか?5までだと personをsaveしたときにpriceのvalidationはしてくれないので、特別に宣言しないと
guest

回答2

0

自己解決

以下のようにしたら解決できました!

ja: activerecord: attributes: person: name: 名前 gender: 性別 contact: 連絡先 sample: サンプル comment: コメント person/prices: service: 料金のサービス名 price: 料金

投稿2020/08/16 01:44

miSaito

総合スコア16

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

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

0

人に沢山値段がつく、という世界がわかりませんでした。リンカーン以前の南部アメリカか???
で、人が色々なサービスが可能でその価格ということですね?
どちらをmodelにするか、という点で違和感はありますが、理解はできました。

で、railsは6ですか?5までですと 親をvalidateした時に子のvalidateはしてくれないので、特別に宣言しないと。そこを確認したかったのですがやってないのにerrorsに載るのか。。。。

errors.messagesを確認頂いて、子のエラーのsymbolが何で区切られているかをまず確認してください。
その上でこれが参考なるかな

投稿2020/08/15 03:22

winterboum

総合スコア23329

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

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

miSaito

2020/08/16 01:40

バージョンは5.2.4.2でした。色々自分で試行錯誤した結果解決しました!ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問