4 : データベースにデータを保存する。

前の章:ウェブページの雛形を作ろう!

Header4

0 : この章の目的

 ウェブページ作成に必要になるデータベースへのデータ保存について学ぶ。
Railsでウェブページの雛形を作りそれを開くことができましたので、この章からウェブページの設定の方法について学んでいきましょう!

 少し復習をしましょう。Railsでのウェブページ作成では、なにを自分で設定しなければならないのでしょうか?

それはページの表示データの保存でしたね。(第2章の内容を参照)

これは言い換えれば、
  • ウェブページ提供者が行うページの表示
  • 利用者の行う情報発信
の2つを自分で設定することになります。
※ 内容は第1章を参考
ページの表示とデータの保存についてRailsで行うことを少し復習しましょう!

  • ページの表示
  • データの操作の方法に応じて、「データの表示・作成・変更・削除」の4種類のページを設定します。

  • データの保存
  • どのようにデータの枠組みにデータを保存するかを設定した上で、データの操作「データの表示・作成・変更・削除」の設定をページごとの設定します。

    つまり、データの保存の設定には、
    ⑴ : データの枠組みの定義 ⑵ : データの操作の方法
    の2種類があります。
※ 詳しい内容は第2章に書いてあります。
ページの表示はデータの操作の方法と絡んでくるので、この章ではデータの保存について説明します!

まずはデータの枠組みの定義からやっていきましょう!


1 : データの枠組みの定義

 ① : 自分のデータの枠組みを決めよう!


利用者の発信した情報はデータベースというExcelの表のようなものに保存され、それがページに表示されていきます。

ここではRailsで作ったウェブページでの、データベースの枠組み・Excelの1番上の行の作り方を説明していきます。
例えば、Facebookの投稿のデータベースは下のようなものになります。

 Facebook投稿のデータベース例

投稿の情報
投稿番号 投稿者 投稿内容 投稿時間
山田太郎 入学式 2016/03/02 16:26

Facebookの投稿は、このような形で1つ1つのデータがデータベースに保存されて、それがページ上で表示されます。

上の表を参考にして、作ってみたいデータベースを考えてみましょう!


下に枠があるので、例にそって作ってみたいデータベースの枠組みと内容を入力してみましょう。
内容は「商品」「ツイート」から「授業」「ご飯」までなんでも大丈夫です。1番上の行も2行以上あれば大丈夫です
※ 作りたいデータベースがないのであれば、入力しなくても大丈夫です。
 入力してみよう!

 

「データベースの枠組みの定義」などと小難しい言葉を使いましたが、これからやろうとすることの基本は今やってもらった入力の作業です。

 今回やっていくデータベースの枠組みの定義は、

をウェブサイトのデータベースで設定していくことになります。
※ データの操作は、枠組みの下にある内容の追加・変更・削除のことを言います。

簡単な説明はここまでにして、ここから実際にそのデータベースを作っていきます。
ここでは、基礎編で作るこちらのページのデータベースをこちらで作ってみます。


 ② : データの枠組みを作ろう!


ここでは、これから作るウェブページのデータベースを作ってみます。

具体的には「番号」「投稿者」「内容」「時間」を入れるためのデータベースを作成します。

posts
id name content created_at updated_at
192 山田太郎 入学式 2016-03-02 16:13:52 2016-03-02 16:13:52

 このデータベースに投稿された内容が保存され、表示されます。
Railsでのデータベースの作成・定義はターミナルを使って行います。
まず右上の虫眼鏡マークで探して開いてみましょう。開けたら前章で作ったmyappに移動しましょう!


 Windowsでの移動の方法はこちらを参考


 ターミナル(半角英数字で入力)
1 2 3 cd Desktop cd rails_project cd myapp

では始めましょう!まずは

 ターミナル(半角英数字で入力)
 Windowsをご利用の方は、「コマンドプロンプト」をご利用下さい。
1 rails g model post

を入力して下さい。 Terminal rails g model post このように表示されたでしょうか?

この入力でタイトルが「posts」のデータベースを作るための設定ファイルを作ります。gは「generate」の略です。
赤線が引かれた「2016..._create_posts.rb」がその設定ファイルになります。
この設定ファイルを変更して、データベースの枠組みを作ります。
※ Railsで作るデータベースは全て英語表記になりますので、タイトルは「posts」にしました。枠組みの部分も英語で決めます。

データベースを作る時は
rails g model データベースのタイトル名(単数形)
を入力して、その設定ファイルを作ります。

rails g model タイトル名(単数形)」で作られた設定ファイル名は、「作った日時_create_タイトル名(複数形).rb」になります。
 では、その設定ファイルを変更していきましょう!

Sublime Text」でその設定ファイルを変更してみましょう!まずは右上の虫眼鏡マークで探して開きましょう!

開けたら、「myapp」のフォルダを「Sublime Text」で開いてみましょう!
※ ファイル・フォルダの開き方はこちらを参考にして下さい
 Windowsでのファイル・フォルダの開き方は、こちらを参考にして下さい


下のようなウィンドウはでてきましたでしょうか? Window sublime text myapp 出てきたら下の手順に従ってファイルを開いてみましょう。 Sublime text migration create post この「2016...._create_posts.rb」というファイルが枠組みを作る設定ファイルになります。

 2016..._create_posts.rb
1 2 3 4 5 6 7 8 9 class CreatePosts < ActiveRecord::Migration def change create_table :posts do |t| t.timestamps null: false end end end

この設定ファイルで「posts」というタイトルのデータベース(Excelの表)を作ります。
この「create_table :posts」という部分が「postsというタイトルのデータベースを作る」ことを示している設定になります。自分で設定ファイルを0から書く必要はないのでなんとなく理解してもらえれば結構です。
データベースの枠組みは、「create_table :posts do |t|」とその次に出てくる「end」の間に書いて設定していきます。

なので、「create_table :posts do |t|」とその次に出てくる「end」の間にはすでに一つの設定が入っていますね。

 2016..._create_posts.rb(5行目)
5 t.timestamps null: false

この1行は、
  • データが作られた時間(created_at
  • 更新された時間(updated_at
の枠組みを加える設定
で、設定ファイルにから加えられています。
いらなければ消すこともできます。

この「timestamps」の設定と同じように、下にある投稿のデータベースの枠組みを追加してみます!

posts
id name content created_at updated_at
192 山田太郎 入学式 2016-03-02 16:13:52 2016-03-02 16:13:52
※ 枠組みの名前は日本語ではなく英語なのは、枠組みはアルファベットでしか設定できないからです。

内容はそれぞれ、
  • id が、投稿番号
  • name が、投稿者の名前
  • content が、投稿内容
  • created_at が、投稿作成時間
  • updated_at が、投稿更新時間
になります。

説明した通りcreated_atupdated_att.timestamps null: falseで付け加えられる枠組みなのですが、
id」も自動的に生成されるので、設定しなければいけないのは「name」「content」の2つになります。
枠組みの設定には下の2つのことを設定する必要があります。

  • 枠組みに入れるデータの種類
  • 例えば、数字・短い文字列・長い文字列・時間など(上の例で言えば、timestamps
  • 枠組みの名前
  • アルファベットで同じ名前が被らないように設定する(上の例で言えば、created_at・updated_at

 では、枠組みの設定をやってみます!

 2016..._create_posts.rb(5,6行目を追加)
※ 半角英数で入力して、変更が完了したら「Command」と「s」を一緒に押して内容を保存して下さい。
※ 綺麗に見せるために空白は多めに入れていますが、打つのが面倒なら空白は1つとかでも大丈夫です。
 Windowsをご利用の方は、「ctrl」と「s」を一緒に押して内容を保存して下さい。


1 2 3 4 5 6 7 8 9 10 class CreatePosts < ActiveRecord::Migration def change create_table :posts do |t| t.string :name t.text :content t.timestamps null: false end end end

name」「content」の設定はこのようになります。

  • データの種類の設定
    • 数字の時はt.integer
    • 短い文字列の時はt.string
    • 長い文字列の時はt.text
    • 細かい日時の時はt.timestamps
    と書いて行います。
    ※ 他にも、正偽の「t.boolean」や日時の「t.date」などがある。
  • 名前の設定
  • データの種類の設定の後で「:名前」を加えることで行います(名前はアルファベットで入力)。

この2つの設定を
t.データの種類 :名前
と書いて設定します。

これで、
  • 数字を入れる「id」
  • 短い文字列を入れる「name」
  • 長い文字列を入れる「content」
  • 日時を入れる「created_at/updated_at」
が入る枠組み「posts」の設定ができました。

 自分が作ってみたいデータベースの枠組みもどうやれば作れるか考えてみましょう!
 枠組みの設定に、短い文字列をいれる「place」を加える設定はどのようになるでしょうか?(マウスを上に置くと答えがでます)
※ 設定ファイルに追加する必要はありません


 2016..._create_posts.rb
t.string :place

ここまでで設定ファイルの変更ができたら、設定ファイルの内容を実際のデータベースに反映させます。
下の入力をしてみて下さい!

 ターミナル(半角英数で入力)
 Windowsをご利用の方は、「コマンドプロンプト」をご利用下さい。
1 rake db:migrate

 動かない場合は、「bundle exec」を前につけ、「bundle exec rake ...」で入力して下さい。 Terminal rake db migrate このように表示されたでしょうか?
これでデータベースの作成はできました!
作ったデータベースをSequel Proで確認してみましょう!これもまず右上の虫眼鏡マークで探して開きましょう!


 Windowsをご利用の方は、SqliteBrowserを使います。
 こちらを参考にして「db > development.sqlite3」を開き、「posts」データベースの中身を確認して下さい。

 確認できたら、こちらから次に進んで下さい。


開けたら下の手順に従って開いてみましょう! Sequel pro できたら左上の「Choose Database」をクリックして下さい。 Sequel pro choose database 出てきたリストボックスの中から「myapp_development」をクリックしてみて下さい。 Sequel pro select myapp 左に「posts」はありますか?これが作ったデータベースになります。これを開いてみましょう! Sequel pro myapp development 開いて下の画像のように1番上の行ができてるでしょうか? Sequel pro myapp development posts Ruby on Railsでは、こうやってウェブページで使われるデータベースを設定します。
 ターミナルで「rails g model タイトル名」で設定ファイルを作成し、設定ファイルを変更した上で「rake db:migrate」をすることでデータベースを設定する。


 ③ : データベースの枠組みを変更する


ここまでで、データベースの枠組みの作り方について説明しました。

でも、最初から完成された枠組みを作るのは難しいです。枠組みを間違えて設定した時や、後から枠組みを追加したり削除したい時はどうすればいいのでしょうか?
ここでは、枠組みの変更について説明したいと思います。


 ⑴ : 枠組みを追加する


データベースを作る時に、最初から完成されたデータベースを作ることは難しいです。
データベースの枠組みを設定する時は、後から内容を追加することがよくあります。その枠組みの追加を説明していきます。

まずは、ターミナルで「myapp」にまで移動して下さい。


 Windowsでの移動の方法はこちらを参考


 ターミナル
1 2 3 cd Desktop cd rails_project cd myapp

移動できたら、下の入力をしてみて下さい。

 ターミナル(半角英数で入力)
 Windowsをご利用の方は、「コマンドプロンプト」をご利用下さい。
1 rails g migration addColumnToPost

下のように表示されたでしょうか? Terminal rails g migration add column to post この入力は、枠組みを変更する「add_column_to_post」という追加の設定ファイルを作成する入力になります。

なのでまとめると、
rails g migration 設定ファイル名
で、指定した名前の追加の設定ファイルを作成します。
設定ファイル名はどのようなものでも大丈夫ですが、後で見た時に分かりやすいものにしましょう。
では、この設定ファイルを見てみましょう!
まず「Sublime Text」で「myapp」を開いてみましょう!
※ ファイル・フォルダの開き方はこちらを参考にして下さい。
 Windowsでのファイル・フォルダの開き方はこちらを参考にして下さい。


開けたら、下の手順でファイルを開いてみましょう! Sublime text open migration add column to post  2016..._add_column_to_post.rb
1 2 3 4 class AddColumnToPost < ActiveRecord::Migration def change end end

こんな感じのファイルが表示されたでしょうか?
このファイルのdef change」とその次の「end」の間に、枠組みを変更する設定を追加します。

枠組みの変更には、枠組みの追加、変更、削除があります。
ここでは、枠組みの追加をやってみましょう!
この「rails g migration 設定ファイル名」で作ったファイルでの枠組みの変更には、最低限3つの設定をする必要があります。
  • どのデータベースを変更するか
  • どのデータベースを変更するかを指定します。この場合は「posts」になります。
  • 変更する枠組み
  • 追加する時は、追加する枠組みの名前を設定します。変更・削除の場合はすでにある枠組みを指定します。
  • 枠組みに入力するデータの種類
  • これは枠組みを作る時のものと同じで、数字・短い文字列・長い文字列・日時などあります。

追加の場合、この3つの設定は
add_column :データベース名, :枠組みの名前, :データの種類
になります。

すでに作ってある「posts」のデータベースに「place」を加えるのを例にして見てみましょう!

posts
id name content created_at updated_at place
山田太郎 春からSFC 2016/03/02 16:26 2016/03/02 16:26 新宿

 2016..._add_column_to_post.rb(半角英数で3行目を追加)
※ 変更ができたら、「Command」と「s」を一緒に押して内容を保存しましょう!
※ 空白は少なくても多くても大丈夫です。
 Windowsをご利用の方は、「ctrl」と「s」を一緒に押して内容を保存して下さい。


1 2 3 4 5 class AddColumnToPost < ActiveRecord::Migration def change add_column :posts, :place, :string end end

これが、postsというデータベースに、placeというstring・短い文字列の枠組みを追加するよという設定になります。このような設定はいくつでも追加することができます。

データの種類だけ難しいですが、もし種類が長い文字列だったらstringはtextに、数字ならstringはintegerになります。
※ なぜか「:」が入っていますが、これは設定ファイルの仕様なんで許して下さい。

  では例えば、「数字を入れるreputationの枠組みを、postsというデータベースに追加する」にはどのような設定が必要でしょうか?(マウスを上に置けば答えがでます)


 2016..._add_column_to_post.rb(3行目)


3 add_column :posts, :reputation, :integer

みたいな感じになります。
ここまでで追加について説明しましたが、削除・変更についても少し説明しましょう。

削除と変更も、追加と同じようにデータベース名・枠組み・データの種類の3つを指定します。
内容を変える設定なので追加の時と違って、枠組みとデータの種類はすでに作成されているものを指定しないといけません。

削除したい時は、
remove_column :データベース名, :枠組みの名前, :データの種類
変更したい時は、
change_column :データベース名, :枠組みの名前, :データの種類
を設定ファイルに追加します。(変更とは言ってもデータの種類しか変更できませんが)
なので「posts」のデータベースの「string(短い文字列)」が入る「name」の枠組みを削除したい時は、

 設定ファイル
1 remove_column :posts, :name, :string

のように設定し、
「posts」のデータベースの「string(短い文字列)」が入る「name」の枠組みを、「text(長い文字列)」が入るように変更したい時は、

 設定ファイル
1 change_column :posts, :name, :text

のように設定します。
ここまでで、設定ファイルの設定の方法について説明しました。
でも現状では設定はたしかに終わったものの、その設定内容はまだ適用されていません。
ここでその設定を適用させましょう!

設定の適用はターミナルを使って行います。まずはターミナルで「myapp」まで移動しましょう。


 Windowsでの移動の方法はこちらを参考


 ターミナル(半角英数で入力)
1 2 3 cd Desktop cd rails_project cd myapp

「myapp」まで移動できたら、下の入力をして下さい。

 ターミナル(半角英数で入力)
 Windowsをご利用の方は、「コマンドプロンプト」をご利用下さい。
1 rake db:migrate

 動かない場合は、「bundle exec」を前につけ、「bundle exec rake ...」で入力して下さい。

下のような表示が出てきたでしょうか? Terminal rake db migrate2 これで枠組みの変更は完了しました!
データベースが変更されているかを「Sequel Pro」で確認してみましょう!
※ 開き方はこちらを参考にして下さい


 Windowsをご利用の方は、SqliteBrowserを使います。
 こちらを参考にして「db > development.sqlite3」を開き、「posts」データベースの中身を確認して下さい。


枠組みに「place」は追加されているでしょうか?

 枠組みの変更を設定するファイルは「rails g migration 設定ファイル名」で作り、ターミナルで「rake db:migrate」を入力することでその設定を適用させる。


 ⑵ : 間違えた設定を直す

ターミナルでrake db:migrateをすると、設定ファイルで設定した内容が実際のデータベースに適用されます。
ですが、もし設定を間違えて「rake db:migrate」をした時はどうすればいいのでしょうか?

例えば、「text・長い文字列」を入れる「content」なのに、「string・短い文字列」で設定してしまったとした時など

新しく設定ファイルを作って、内容を変更するできるでしょうか?
(「rails g migration 設定ファイル名」で設定ファイルを作り、「change_column :posts, :content, :text」を入力)
もちろんそれでも枠組みは変更できますが、もっと簡単な方法があります。

Railsでは、直前に行ったデータベースの変更を取り消すことができます。
つまり、間違えた設定を取り消して、設定ファイルの内容が適用される前の状態に戻すこともできるのです。

ターミナルで下の入力をすることでそれはできます。

 ターミナル(半角英数で入力)
 Windowsをご利用の方は、「コマンドプロンプト」をご利用下さい。
1 rake db:rollback

 動かない場合は、「bundle exec」を前につけ、「bundle exec rake ...」で入力して下さい。

これを入力すれば、前の設定ファイルから適用された内容はなくなります。設定ファイルを直してrake db:migrateで、もう一度設定ファイルを適用させることで間違いを直すことができます。

この入力は1つずつしか戻せませんが、間違えてしまった時などは利用してみてください。
 rake db:rollback」で、データベースを一つ前の設定を適用させる前に戻せる。

この後で、設定ファイルを変更して「rake db:migrate」をすることで間違った設定を直す


 ④ : まとめ


利用者の発信した情報の保存は、データの保存をするための表・データベースに書き込まれる。
ウェブページを作る時には、その表にどのような情報を入れるかの枠組みを決めなくてはいけない。

このデータベースの枠組みの設定は、ターミナルと設定ファイルの変更で行う。
 ターミナル
  • rails g model タイトル名(単数形)
  • タイトル名(複数形)のデータベースの設定ファイルを作る

  • rails g migration 設定ファイル名
  • データベースを変更する設定ファイルを作る

  • rake db:migrate
  • 設定ファイルの設定を実際のデータベースに適用させる

  • rake db:rollback
  • 適用された内容を直前の状態に戻す。

 設定ファイル
  • データベースを作る時の設定

  • 「データの種類」の「枠組み」を作る
    t.データの種類 :枠組みの名前
    
    t.integer :age

  • データベースを変更する時の設定

  • add_column :データベース名, :枠組みの名前, :データの種類
    
    add_column :posts, :name, :string

    同じような感じですでにある枠組みに対しては、
    remove_column :データベース名, :枠組みの名前, :データの種類
    
    change_column :データベース名, :枠組みの名前, :データの種類
    
    で変更と削除を行います。
  • データ種類
  • 枠組みに入れるデータの種類も自分で決めなければならない。
    具体的には、
    • 「短い文字列」の「string」
    • 「長い文字列」の「text」
    • 「数字」の「integer」
    • 「時間」の「date」

    などである。

 余力があれば、自分が作ってみたいウェブページのデータベースを作ってみましょう!


2 : データベースへの内容の追加

ここまでで、データベースの枠組みを作りました。ここでは、できた枠組みに実際のデータを保存しましょう!

 ① : データを作ろう!


簡単な枠組みもできたので、データを入れていきましょう!

ここでは『新宿にいた山田太郎さんの「春から学校」という投稿』をできた枠組みに追加しましょう!
本来ならデータの保存はウェブページで行うものなのですが、ページの作り方はまだやっていないので、ここではターミナルを使ってデータを作っていきます。

まずは、ターミナルで「myapp」まで移動して下さい。


 Windowsでの移動の方法はこちらを参考


 ターミナル
1 2 3 cd Desktop cd rails_project cd myapp

移動ができたらrails cと入力してみて下さい。

 ターミナル(半角英数で入力)
 Windowsをご利用の方は、「コマンドプロンプト」をご利用下さい。
1 rails c

下のように入力する画面は出てきたでしょうか? Terminal rails c このrails cは、Ruby on Railsで作ったウェブページのデータベースの操作などを行う機能です。ここでは、この機能を使ってデータを作っていきます。

では一回、exitと入力してみて下さい。 Terminal rails c exit またターミナルの入力欄に戻ったでしょうか?
rails cexitと入力して終了させることができます。使い終わったら、exitを入力して終了させましょう。
ではもう一度rails cを入力して開いてみましょう!
ここに入力をすることで、データベースへのデータの保存を行っていきます。
では下の入力をしてみて下さい

 ターミナル(日本語以外は半角英数で入力)
  Windowsの「コマンドプロンプト」は文字化けするので、すべて英数字で入力して下さい。
1 Post.create(:name => "お名前", :content => "投稿", :place => "場所")

下のように表示されたでしょうか? Rails c create post これでデータベースへのデータの保存は完了しました!

では「Sequel Pro」で中身を確認してみましょう!
※ 開き方はこちらを参考にして下さい


 Windowsをご利用の方は、SqliteBrowserを使います。
 こちらを参考にして「db > development.sqlite3」を開き、「posts」データベースの中身を確認して下さい。


下のようにデータが追加されたでしょうか? Sequel pro posts data1
データの作成は、
データベースのタイトル.create(:枠組み => "内容", :枠組み => "内容", あるだけ...)
を入力すればできます。(データベースのタイトルは大文字から始まる単数形)

1 Post.create(:name => "山田太郎", :content => "春から学校", :place => "新宿")

入力にidと時間がないのは、idと時間は自動的に作ってくれてるからです。
具体的な例を出すので、考えてみましょう!
 では、『湘南花子さんが藤沢で投稿した「おはよう」という投稿』はどのようにして入力して作ればいいでしょうか?
(マウスを上に置けば答えが出ます)



1 Post.create(:name => "湘南花子", :content => "おはよう", :place => "藤沢")

 下のデータベースの枠組みがあった時、『藤沢太郎さんの「六本木に着いた」というツイート』はどのように入力すれば作れるでしょうか?
(マウスを上に置けば答えが出ます)


tweets
id user content created_at updated_at


1 Tweet.create(:user => "藤沢太郎", :content => "六本木に着いた")

 データの作成は「データベースのタイトル.create(:枠組み=>"内容", :枠組み=>"内容", :枠組み=>"内容")」で行う
※ データベースのタイトルは大文字から始めて、単数形にする。


 ② : データを変更しよう!


ここまででデータの作成をしましたが、データの操作は作成のみではありません。他にデータの変更・削除があります。

ここではデータの変更をやってみましょう。作成した投稿の内容を「入学式」に変えてみましょう。

データの変更・削除をするには、まずどのデータを変更するのかを選択する必要があります。
変更をする前に、このデータの選択を説明します!
データの選択の方法は2つあります。
  • idからデータを選択する方法(find
  • 他の枠組みから内容を検索する方法(where
の2つになります。

 一つ目の方法・idから選択する方法をやってみましょう。

まず、rails cを入力して、下の入力をしてみて下さい。

 ターミナル(半角英数で入力)
 Windowsをご利用の方は、「コマンドプロンプト」をご利用下さい。
1 Post.find(1)

下のように保存したデータが表示されたでしょうか? Rails c post find 1 今回の入力、「Post.find(1)」は「postsから、idが1のデータを選択」する入力になります。

idからデータを選択するには、
データベースのタイトル.find(数字)
を入力します。(データベースのタイトルは大文字から始める単数形)
 次に二つ目の方法・id以外の枠組みから検索して選択する方法をやってみましょう。

rails cで下の入力をしてみて下さい。

 ターミナル(日本語以外は半角英数で入力)
  Windowsの「コマンドプロンプト」は文字化けするので、すべて英数字で入力して下さい。
1 Post.where(:name => "山田太郎")

下のように保存したデータが表示されたでしょうか? Rails c post where name 今回の入力、「Post.where(:name => "山田太郎")」は、「nameの枠組みが山田太郎のデータを選択」する入力になります。

id以外から検索するには、
データベースにタイトル.where(:枠組み => "内容", あるだけ...)
を入力します。(データベースのタイトルは大文字から始める単数形)

なので「名前が湘南花子・場所が藤沢」のデータを検索するには、

1 Post.where(:name => "湘南花子", :place => "藤沢")

と入力します。
ここまででデータの選択ができたので、内容の変更をしてみましょう!

内容の変更は、
findで選択したデータ.update(:枠組み => "内容", あるだけ...)
で行います。
※ whereでの変更はまた後で説明します。

 ターミナル(日本語以外は半角英数で入力)
  Windowsの「コマンドプロンプト」は文字化けするので、すべて英数字で入力して下さい。
1 Post.find(1).update(:content => "入学式")

を入力してみましょう。下のように表示されたでしょうか? Rails c post find 1 update できたら、Sequel Proで開いて内容が変わったかを確認しましょう!

※ Sequel Proの開き方はこちらを参考にして下さい


 Windowsをご利用の方は、SqliteBrowserを使います。
 こちらを参考にして「db > development.sqlite3」を開き、「posts」データベースの中身を確認して下さい。


 内容が変わっていなかったら、内容を更新する必要があります。内容の更新は下のようにします。 Sequel pro update contentの部分が「入学式」に変わっていますか?

では試しに、他のデータも変更してみましょう!

 今回変更した投稿のデータを元の『contentが「春から学校」の投稿』に戻しましょう。(マウスを上に置くと答えがでます)


1 Post.find(1).update(:content => "春から学校")

 投稿者の名前を「斉藤さん」に変えてみましょう!(マウスを上に置くと答えがでます)


1 Post.find(1).update(:name => "斉藤さん")

 投稿した場所を「六本木」、投稿を「パーティー」に変えてみましょう!(マウスを上に置くと答えがでます)


1 Post.find(1).update(:place => "六本木", :content => "パーティー")

最後に、Sequel Proで内容が変更されたかを確認しましょう!
※ Sequel Proの使い方はこちらを参考にして下さい


 Windowsをご利用の方は、こちらを参考にして「db > development.sqlite3」を開き、「posts」データベースの中身を確認して下さい。


Sequel Proのデータベースの更新も忘れずに

 データの変更は「データベースのタイトル.find(idの番号).update(:枠組み => "内容")」で行う
※ データベースのタイトルは大文字から始めて、単数形にする。


 ③ : データを削除する


データの変更もできたので、今度はデータを削除してみましょう!
まずは、rails cを入力しましょう。
 復習ついでに『あなたがシリコンバレーで投稿した「インフルで倒れた」という投稿』のデータを作ってみましょう!
(マウスを上に置けば答えが表示されます)

 日本語が文字化けするので、Windowsをご利用の方は半角英数字で好きな内容の投稿を作成して下さい。


1 Post.create(:name => "あなたの名前", :content => "インフルで倒れた", :place => "シリコンバレー")

ではこの「インフルで倒れた」データを削除しましょう!

データの削除も変更と同じように、find」でデータを指定してから削除を行います。
なので、まずはこの投稿の番号を知っておきましょう。
まずは下の入力をしてみましょう。

 ターミナル(半角英数で入力)
 Windowsをご利用の方は、「コマンドプロンプト」をご利用下さい。
1 Post.all

下のように表示されたでしょうか?
この中に「インフルで倒れた」データは入っているでしょうか? Rails c post all この入力は、postsにある全てのデータを表示させています

データベースのタイトル.all
でデータベースに保存されたデータを全て表示させます。
※ データベースのタイトルは、大文字から始まる単数形で書く

もちろんこんなことをしなくても、Sequel Proで中身を確認することもできます。
 Windowsをご利用の方は、SqliteBrowserをご活用下さい。
作成されていることが確認できたら、削除をしていきましょう!
データの削除も変更と同じように、まずはデータを選択してから行います。

 では復習で、この新しく作った「インフルで倒れた」データを選択してみましょう。


1 Post.find(3)

データの削除は、
選択したデータ.destroy
でできます。
では、やってみましょう。

 ターミナル(半角英数で入力)
 ※ 数字の部分は適宜、自分が削除したいデータのidに変更する
  Windowsをご利用の方は、「コマンドプロンプト」をご利用下さい。
1 Post.find(3).destroy

下のように表示されたでしょうか? Rails c post find 3 destroy できたら、Sequel Proで中身を確認しましょう。
 Windowsをご利用の方は、SqliteBrowserをご活用下さい。

作成されたデータはなくなっているでしょうか?

 「idが5のデータを削除」する場合はどのような入力をすればいいのでしょうか?


1 Post.find(5).destroy

 終わったらexitを入力して下さい。これでrails cを終了させます。

 データの削除は「データベースのタイトル.find(idの番号).destroy」で行う
※ データベースのタイトルは大文字から始めて、単数形にする。


 ④ : まとめ


データの保存などの操作は、「rails c」に入力する命令で行う。
※ ここでの入力は、後でページのデータ操作を設定する時にも使いますので、頭の片隅にでも置いておいて下さい
データ操作の方法は作成・変更・削除の3つがある。

  • データの作成

  • データベースのタイトル.create(:枠組み => "内容", :枠組み => "内容", あるだけ...)
    
    ※ データベースのタイトルは大文字から始める単数形にする
    例:「name」が「山田太郎」、「content」が「春からSFC」のデータを作成
    1 Post.create(:name => "山田太郎", :content => "春からSFC")

  • データの選択

  • データベースのタイトル.find(変更するデータのid)
    
    ※ データベースのタイトルは大文字から始める単数形にする
    例:「id」が「2018」のデータを選択
    1 Post.find(2018)

  • データの変更

  • データベースのタイトル.find(変更するデータのid).update(:枠組み => "内容", :枠組み => "内容", あるだけ...)
    
    ※ データベースのタイトルは大文字から始める単数形にする
    例:「id」が「29」のデータの、「content」を「春からSFC」・「place」を「藤沢」に変更
    1 Post.find(29).(:content => "春からSFC", :place => "藤沢")

  • データの削除

  • データベースのタイトル.find(変更するデータのid).destroy
    
    ※ データベースのタイトルは大文字から始める単数形にする
    例:「id」が「1900」のデータを削除
    1 Post.find(1900).destroy

  • データの全選択

  • データベースのタイトル.all
    
    ※ データベースのタイトルは大文字から始める単数形にする
    例:全てのデータを選択
    1 Post.all

 これらのデータの操作がウェブページの裏で行われています。
ウェブページでも同じようにしてデータの操作を設定していきます!


3 : まとめ

ウェブページは、利用者の発信した情報をデータベースという表に保存しそれを表示させている。

なのでウェブページを作るためには、データベースの表の枠組みを決め、実際にそこにデータを入れていきます。
枠組みの細かい設定はこちらのまとめを、
内容の操作はこちらのまとめをそれぞれみて下さい。
 ここまででデータの保存に関することはひととおり終了です。
   次の章ではページを表示させましょう!

  また設定した内容はこちらからも見れます。