Rails Drill 問題1
必要となる知識
new
メソッドでは、それぞれのインスタンスのカラムの値が空(nil)になっている。以下のように、new
メソッドに引数を渡すことで、カラムの値がセットされた状態でインスタンスを生成することができる。カラムを複数指定する場合は、カンマで区切ることを忘れないように。
newメソッドを使ってTweetモデルのインスタンスを以下の条件で生成し、保存する。
カラム | 値 |
---|---|
textカラム | 「I'm doing rails now. It's so fun!!」という文字列 |
imageカラム |
「http:://image.jpg」という文字列(例なので画像は 表示されない) |
user_idカラム | 1 |
実行結果
コンソール
1 2 3 4 5 |
解答例
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を同時に行うことができる。