hiyoko-programingの日記

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

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
pry(main)> tweet = Tweet.new
=> #<Tweet id: nil ,image: "nil", text: "nil", created_at: nil, updated_at: nil>

実行結果

コンソール
 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.カラム名 = 代入する値
と書けば、インスタンスを生成した後に値を代入することが出来る。

なお、正確にはカラムと同じ名前のセッターメソッドを使用して値を代入している。