Railsのモデルとオブジェクトを知る

ここではRailsモデルからオブジェクトを作成する方法とその操作方法について学びます。Railsで使用するオブジェクトの操作方法をRailsコンソールで試しながら理解を深めていきましょう。

下準備

オブジェクトを今のコードとは関係なく試したいので、Articleモデル、コントローラ、ビューを簡単に作成したいと思います。まずはターミナルに以下のコードを打ち込んで実行しましょう。

rails g scaffold Article title:string body:text

これでRails基礎編の講座でもおなじみのArticleを作成することができました。

モデルからオブジェクトを作成する

ここからは実際にRailsコンソールで試しながら進めたいと思います。以下のコマンドをターミナルに打ち込んでRailsコンソールを起ち上げましょう。

rails c

まずはArticleモデルからオブジェクトを作成します。Railsでは先頭の文字を大文字にするとモデルにアクセスすることができることを覚えておきましょう。以下のコマンドを実行するとモデルからオブジェクトを作成することができます。

Article.new

これだでだと、後から操作することができないので「変数」を用意して、そこにオブジェクトを入れておきます。今回はarticle1という変数を用意して、そこに入れたいと思います。

article1 = Article.new

ここで出てくる「=(イコール)」は等しいという意味ではなく、「値を代入する」という意味です。

図にするとarticle1という箱の中にオブジェクトが入っている(代入されている)という状態になります。

作成したオブジェクトの中身はまだ空っぽです。上の図を見るとtitleとbodyの値にはnilになっていますよね。

では、その中身を入れてみましょう。作成したarticle1に値を入れます。以下のように値を代入してみましょう。

article1.title = "test1"
article1.body = "test body1"

そうするとこういう状態になります。オブジェクトに値がセットされていますね。

他のオブジェクトも作成する

他のオブジェクトも作成してみましょう。同じArticleから作成して、それをarticle2変数に入れてみます。

article2 = Article.new
article2.title = "test2"
article2.body = "test body2"

このように複数のオブジェクトを作成することができます。

オブジェクトから値を取り出す

ひとつめのオブジェクトの値を取り出してみましょう。1つ目のオブジェクトはarticle1でしたね。その値を取り出すには以下の文法を使います。

変数 + ドット + 属性名

例えばarticle1からタイトルを取りたい場合には以下のようにします。

article1.title #=> "test1"

これは

「article1の箱に入っている値の中のtitleという属性の中身は? =>test1です」

というのと同じ意味です。

article2.title #=> "test2"

これも、article2の箱に入っている値の中のtitleという属性の中身は? =>"test2"です

という意味になります。

オブジェクト作成、便利な書き方

上で詳細したインスタンス作成方法は以下のように何行かに分けて書く方法をとりました。

article1 = Article.new
article1.title = "test1"
article1.body = "test body1"

しかし、これを1行で書くことができます。

article1 = Article.new(title: 'test1', body: 'test body1')

コンソールの結果部分に注目してください。

titleとbodyにきちんと値が代入されていることがわかります。

どちらで書いても良いですが、こういう書き方があることを覚えておきましょう。

課題

アーティクルで試したように、クリップでもターミナルでインスタンスを作成してみましょう。

無料ビデオ講座のお知らせ

Skillhub [スキルハブ]では無料の動画講座を多数公開しています。他校だと数万円するような講座が無料で受講できます。

無料講座一覧を見る

×