Ruby on Railsでブログ作成(8) - rails consoleでデータの編集、削除、制約を確認する

プログラミング、サーバー、ネットワーク、IT用語、ハマったときのトラブルシューティングなど様々なIT関連の話題をひたすら書いていく技術ブログです。

2017年2月23日木曜日

Ruby on Railsでブログ作成(8) - rails consoleでデータの編集、削除、制約を確認する


今回はもう少しrails consoleについて確認していきます。本来ユーザーはブラウザ上で編集したりすると思いますが、UIを作成する前にrails consoleにもう少し慣れておきましょう。

rails consoleでデータ編集(edit)してみる

前回と同様にコンソールでrails consoleとしましょう。そしてidが2のデータを修正したいときに下記のようにします。

article = Article.find(2)

すると変数aritcleにidが2のデータが入ります。


ここでidが2のデータのタイトルを編集するには

article.title = "タイトルを編集しました。"
article.save
Article.all

すると、id=2のタイトルが編集されていますね。


rails consoleでデータの削除(destroy)

今度はデータを消してみましょう。簡単です。destroyメソッドを使うだけです。

article = Article.find(3)
article.destroy
Article.all


rails consoleでデータのチェック(validates)

一つ問題が生じます。

article = Article.new
article.save

とすると、データがnilのままsaveされてしまいます。


これはarticle.destroyで削除しておきましょう。例えばtitleは絶対にデータ入力して欲しい時はどうすればよいでしょうか?nilを防ぐにはモデル(article.rb)にvalidatesを書きます。

class Article < ActiveRecord::Base validates :title, presence: true end そのあとreload!してください。そして

article = Article.new(description: "タイトルvalidates")
article.save


結果はtitleがnilなのでrollbackされていることが確認できます。なぜエラーが起きたのか、しっかり確認したい時は、

article.errors.full_messages


["Title can't be blank"] と表示されていますね。同じvalidatesでdescriptionのnilも防ぎましょう。

class Article < ActiveRecord::Base validates :title, presence: true validates :description, presence: true end ここで、titleにa、descriptionにbだけ入れてsaveしてみると、データが存在しているので保存できてしまいます。理論的には合っていますが、最低何文字、最大何文字という制約を付けたいこともあるでしょう。その場合はlengthを追加します。




SQLがrollbackされていて、理由が["Title is too short (minimum is 3 characters)", "Description is too short (minimum is 10 characters)"] だということが分かりますね。

ここまででrails consoleから編集、削除、制約を確認してみました。githubにここまでのソースコードをpushしておきましょう。

git add -A
git commit -m '何をしたか書く'
git push origin master

※git push origin masterとmasterに直接commitやpushをしていますが、本来はbranch(ブランチ)を切るべきです。ここではRailsの説明が主なため、また私一人しか作業していないので直接masterにcommitしたり、pushしたりしています。これから先も同様です。

◯「Ruby on Railsでブログ作成(9) - UIからデータベースへ保存する」の記事はこちら
◯「Ruby on Railsでブログ作成」シリーズの記事一覧はこちら



最近の投稿