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