hiyoko-programingの日記

プログラミングを勉強したてのひよっ子。   エンジニア目指して勉強中。

Rails Drill 問題1

必要となる知識

newメソッドでは、それぞれのインスタンスのカラムの値が空(nil)になっている。以下のように、newメソッドに引数を渡すことで、カラムの値がセットされた状態でインスタンスを生成することができる。カラムを複数指定する場合は、カンマで区切ることを忘れないように。

コンソール
1
pry(main)> tweet = Tweet.new(image: "sample", text: "sample-text", user_id: nil)

newメソッドを使ってTweetモデルのインスタンスを以下の条件で生成し、保存する。

カラム
textカラム 「I'm doing rails now. It's so fun!!」という文字列
imageカラム

「http:://image.jpg」という文字列(例なので画像は

表示されない)

user_idカラム 1

実行結果

コンソール
1
2
3
4
5
pry(main)> #newメソッドを用いたインスタンスを生成するコマンドを打ってください
=> #<Tweet id: nil, image: "http://image.jpg", text: "rails now. it's so fun!!", created_at: nil, updated_at: nil, user_id: 1>

pry(main)> #インスタンスを保存するメソッドを用いたコマンドを打ってください
=> true

 

 

解答例
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
[1] pry(main)> tweet = Tweet.new(text: "I'm doing rails now. It's so fun!!", image: "http:://image.jpg", user_id: "1")

=> #<Tweet:0x00007fa9a11a17e0
 id: nil,
 text: "I'm doing rails now. It's so fun!!",
 image: "http:://image.jpg",
 created_at: nil,
 updated_at: nil,
 user_id: 1>
[2] pry(main)> tweet.save
   (0.3ms)  BEGIN
  Tweet Create (0.9ms)  INSERT INTO `tweets` (`text`, `image`, `created_at`, `updated_at`, `user_id`) VALUES ('I\'m doing rails now. It\'s so fun!!', 'http:://image.jpg', '2018-11-30 06:09:32', '2018-11-30 06:09:32', 1)
   (0.4ms)  COMMIT
=> true

解説

インスタンスを生成する際にそれぞれのカラムに代入したい値を入れる場合、

Tweet.new(text: "I'm doing rails now. It's so fun!!", image: "http:://image.jpg", user_id: "1")

のようにnewメソッドに引数を与えてあげる。

また、newメソッドはモデルのインスタンスを生成するのみでデータベースには保存されていない。
データベースに反映させるためにはsaveメソッドを使う。

またcreateメソッドを使うと、newとsaveを同時に行うことができる。