Rails Drill 問題2
必要となる知識
以下のように、インスタンスは生成された後でもカラムの値を変更することができる。
コンソール
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# textカラムの値を"first"とする
pry(main)> tweet = Tweet.new(text: "first")
=> #<Tweet id: nil, text: "first", image: nil, created_at: nil, updated_at: nil, user_id: nil>
# tweetのtextカラムの値を表示する
pry(main)> tweet.text
=> "first" # firstになっている
# tweetのtextカラムの値を変更する
pry(main)> tweet.text = "second"
=> "second"
# tweetのtextカラムの値を表示する
pry(main)> tweet.text
=> "second" # secondになっている
|
下記で定義するtweetという空のインスタンスに以下のカラム内容を代入し、保存する。
カラム | 値 |
---|---|
textカラム | 「oh!!happy day!」という文字列 |
imageカラム | 「http:://happy.jpg」という文字列 |
user_idカラム | 1 |
定義する変数
Tweetモデルの空のインスタンスを生成し、tweetという変数に代入。
コンソール
1 2 |
実行結果
コンソール
1 2 3 4 5 6 7 8 9 10 11 |
pry(main)> #textカラムに「oh!!happy day!」を代入するコマンドを打ってください
=> "oh!!happy day!"
pry(main)> #imageカラムに「http:://happy.jpg」を代入するコマンドを打ってください
=> "http:://happy.jpg"
pry(main)> #user_idカラムに1を代入するコマンドを打ってください
=> 1
pry(main)> #インスタンスを保存するメソッドを用いたコマンドを打ってください
=> true
|
解答例
1 2 3 4 5 6 7 8 9 10 11 |
pry(main)> tweet.text = "oh!!happy day!"
=> "oh!!happy day!"
pry(main)> tweet.image = "http://happy.jpg"
=> "http://happy.jpg"
pry(main)> tweet.user_id = 1
=> 1
pry(main)> tweet.save
=> true
|
解説
tweet = Tweet.new
のように新しくインスタンスを生成し、変数tweetを定義した後に、カラムに値を代入する場合
tweet.カラム名
でそのカラムの値にアクセスすることが出来る。
そして、上記のように
tweet.カラム名 = 代入する値
と書けば、インスタンスを生成した後に値を代入することが出来る。
なお、正確にはカラムと同じ名前のセッターメソッドを使用して値を代入している。