データベースに慣れよう!Ruby on Railsでmodelの使い方【初心者向け】

初心者向けにRuby on Railsで使うmodelの使い方を解説しています。データベースとのやりとりを行うのに必要なコマンドが多いのでしっかり覚えておきましょう。データベースの理解はサーバーサイドにおいて重要です。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

modelとは、Rubyのフレームワークrailsのデータベースとのやりとりを行うために用意されているものです。今回はそのmodelをrails内で作成する方法、実際に使用する方法について解説していきたいと思います。

 

なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。

 

大石ゆかり

田島メンター!!モデルというのは何ですか~?

田島悠介

モデルはデータベースとやりとりを行うためのもので、ユーザーからのリクエストがデータに関するものだった場合に必要になるんだ。

大石ゆかり

データベースから値を取得したり格納したりするときに、モデルを経由するってことでしょうか?

田島悠介

そんな感じだね。では実際に、モデルを作成する手順を見ていこう。

 

modelの作成方法

rails generate model モデル名

とするとモデルを作成する事が出来ます。また、generateは省略して以下のように、

rails g model モデル名

としても作成する事ができます。それでは今回はUserというmodelを作成してみましょう。

rails g model User

とターミナルに打ち込み、以下のような画面が表示されたら、モデルの作成は成功です。

Running via Spring preloader in process 33795
invoke active_record
create db/migrate/20160403032828_create_users.rb
create app/models/user.rb
invoke test_unit
create test/models/user_test.rb
create test/fixtures/users.yml

また modelを作成する際はUser,Text,Postのように、1文字目を大文字にするようにしてください。

その後、modelをデータベースに適用させるために以下のコマンドを打ち込んでください。

bundle exec rake db:migrate

 

田島悠介

モデルを作成するときの名前に関する注意点として、「アルファベット大文字から」「単数形にする」の2つがあるね。

大石ゆかり

“Users”じゃなくて”User”にするってことですね。

田島悠介

次はモデルに要素を追加してみよう。

 

modelへの要素の追加

それではmodelに要素を追加していきましょう。

先ほど作成したUserモデルにnameという要素を追加します。以下のコマンドをターミナルに打ち込んでださい。

rails g migration add_name_to_users name:string

以下のように表示されれば成功です。

rails g migration add_name_to_users name:string
Running via Spring preloader in process 34107
invoke active_record
create db/migrate/20160403034050_add_name_to_users.rb

これでuserモデル内にnameという要素が追加されました。

 

今回はmodelについて簡単に解説していきました。modelは今後Railsでアプリを作るにあたって何度も作成するのでしっかりと抑えておきましょう。

 

田島悠介

カラムを追加するときは”名前:データ型”というような形で入力するよ。

大石ゆかり

今回の場合、nameと言う名前のstring、短い文字列型の項目ができたってことですね。

田島悠介

そうだね。また、モデルを作成した際にマイグレーションというものも同時に生成されているんだ。これについてはまた別のところで詳しく説明するよ。

大石ゆかり

分かりました。ありがとうございます!

 

[お知らせ]TechAcademyでは初心者でも8週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。RubyでWebアプリを開発したい方はご参加ください。