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

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

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

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

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

Q&A

解決済

1回答

1234閲覧

名前を”25文字まで”に設定したい

ntk__7__ksn

総合スコア14

Ruby

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

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

1グッド

1クリップ

投稿2020/07/31 09:14

編集2020/07/31 09:20

##前提・実現したいこと
ruby '2.6.6'
gem 'rails', '> 6.0.3', '>= 6.0.3.2'
gem 'mysql2', '
> 0.4.2'

##発生している問題・エラーメッセージ
設定が出来ているか確認をしようと思い、nameを30文字で書いてみたところ最後でfalseと出るはずがtrueと出ている為、保存されてしまいます。

[36] pry(main)> book = Book.new => #<Book:0x00007fad2d1658c8 id: nil, name: nil, published_on: nil, price: nil, created_at: nil, updated_at: nil, publisher_id: nil> [37] pry(main)> book.name = "a" * 30 => "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" [38] pry(main)> book.price = 1000 => 1000 [39] pry(main)> book.publisher = Publisher.find(1) Publisher Load (1.3ms) SELECT `publishers`.* FROM `publishers` WHERE `publishers`.`id` = 1 LIMIT 1 => #<Publisher:0x00007fad27386068 id: 1, name: "Gihyo inc.", address: "Ichigaya", created_at: Fri, 31 Jul 2020 07:23:46 UTC +00:00, updated_at: Fri, 31 Jul 2020 07:23:46 UTC +00:00> [40] pry(main)> book.save (6.1ms) BEGIN Book Create (0.2ms) INSERT INTO `books` (`name`, `price`, `created_at`, `updated_at`, `publisher_id`) VALUES ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 1000, '2020-07-31 08:45:40.490070', '2020-07-31 08:45:40.490070', 1) (8.8ms) COMMIT => true

##該当のソースコード

class Book < ApplicationRecord scope :costly, -> { where("price > ?", 3000) } scope :written_about, ->(theme) { where("name like ?", "%#{theme}%") } belongs_to :publisher has_many :book_authors has_many :authors, through: :book_authors validates :name, presence: true validates :name, length: { maximum: 25 } validates :price, numericality: { greater_than_or_equal_to: 0 } end

##自分で調べたことや試したこと
ターミナルを再起動
スペルミスの確認
インデントの確認
endの中に入っているか確認
他にも色々検索してみましたがわかりませんでした。

わかる方がいらっしゃいましたらよろしくお願いします。

daihi👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

ぱっと見問題ないように見えます。

唯一、コンソールの行数が少し気になりました。
バリデーション設定後、reload!または再起動しましたか?

投稿2020/07/31 20:32

daihi

総合スコア35

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

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

ntk__7__ksn

2020/08/01 05:42 編集

返信遅れました。すいません。 reload!したところ無事falseと出て解決しました!! daihiさん助かりました!ありがとうございました。 少し気になった事なんですが、コンソールのどこの行数が気になったのでしょうか。 少しでも理解を深めたいのでお手数ですが教えて頂いてもよろしいですか? あと、バージョン設定後とは何のバージョンでしょうか?
daihi

2020/08/01 05:44

よかったです! コンソールの行数は、以下の36という部分です [36] pry(main)> 確認作業にしては、かなり行数が溜まっていたので、 [ 編集→reload! or 再起動 ] という手順が漏れているのでは?と思った次第です!
daihi

2020/08/01 06:12

バージョンではなく、バリデーションです! モデルに記述した以下がバリデーションに該当します。 validates :name, presence: true validates :name, length: { maximum: 25 } 入力値に対して検証を行い、「空の値は認めない」「文字数の上限は25」などの条件を 保証するためのものです。
ntk__7__ksn

2020/08/01 06:41

丁寧でわかりやすいです。ありがとうございます。 バリデーションですね。読み間違えました。恥ずかしいw 保証というのは、 バリデーションを記述したらreload!は必ずやっておかなければ反映されないという事でしょうか?
daihi

2020/08/01 06:48

rails cで起動するコンソールは、起動したときのアプリの状態で実行されます。 そのため、バリデーションに限らず、コンソール起動中にエディタ等でアプリを編集したら、reload!か再起動をしないと編集が反映されてない状態のままということになります! 「コンソール起動中に編集したら、reload!か再起動をする」ということを覚えておけばオケです!
ntk__7__ksn

2020/08/01 07:02

なるほど!そういう仕組みなんですね。 すごいわかりやすかったです。 とてもためになりました。 ありがとうございました!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問