Komei22 / rails-tutorial

rails-tutorialのsample_app作っていきます
0 stars 0 forks source link

ch13.1.1演習 #86

Closed Komei22 closed 7 years ago

Komei22 commented 7 years ago

演習1

RailsコンソールでMicropost.newを実行し、インスタンスを変数micropostに代入してください。その後、user_idに最初のユーザーのidを、contentに "Lorem ipsum" をそれぞれ代入してみてください。この時点では、 micropostオブジェクトのマジックカラム (created_atとupdated_at) には何が入っているでしょうか?

irb(main):001:0> micropost = Micropost.new
=> #<Micropost id: nil, content: nil, user_id: nil, created_at: nil, updated_at: nil>
irb(main):002:0> micropost[:user_id] = User.first[:id]
  User Load (0.1ms)  SELECT  "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT ?  [["LIMIT", 1]]
=> 1
irb(main):003:0> micropost[:content] = "Lorem ipsum"
=> "Lorem ipsum"
irb(main):004:0> micropost
=> #<Micropost id: nil, content: "Lorem ipsum", user_id: 1, created_at: nil, updated_at: nil>
irb(main):005:0>

演習2

先ほど作ったオブジェクトを使って、micropost.userを実行してみましょう。どのような結果が返ってくるでしょうか? また、micropost.user.nameを実行した場合の結果はどうなるでしょうか?

irb(main):005:0> micropost.user
  User Load (0.3ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = ? LIMIT ?  [["id", 1], ["LIMIT", 1]]
=> #<User id: 1, name: "Example User", email: "example@railstutorial.org", created_at: "2017-07-06 09:58:38", updated_at: "2017-07-10 08:26:58", password_digest: "$2a$10$roOAiM8Kr8UyzXazaATKrOQ.SJmh.iH//7izkwyZmJn...", remember_digest: nil, admin: true, activation_digest: "$2a$10$feEfQUyrZKnPlq3VeqvnqOHvXjEa3Mah7TOymTNPhHN...", activated: true, activated_at: "2017-07-06 09:58:38", reset_digest: "$2a$10$tWmnciOSntm2OzU8ItpEw.haF6sbXbwaruxh4v4nH9y...", reset_sent_at: "2017-07-11 05:18:39">
irb(main):006:0> micropost.user.name
=> "Example User"

演習3

先ほど作ったmicropostオブジェクトをデータベースに保存してみましょう。この時点でもう一度マジックカラムの内容を調べてみましょう。今度はどのような値が入っているでしょうか?

irb(main):007:0> micropost.save
   (0.1ms)  begin transaction
  SQL (2.0ms)  INSERT INTO "microposts" ("content", "user_id", "created_at", "updated_at") VALUES (?, ?, ?, ?)  [["content", "Lorem ipsum"], ["user_id", 1], ["created_at", "2017-07-11 07:12:38.892975"], ["updated_at", "2017-07-11 07:12:38.892975"]]
   (1.8ms)  commit transaction
=> true
irb(main):008:0> micropost
=> #<Micropost id: 1, content: "Lorem ipsum", user_id: 1, created_at: "2017-07-11 07:12:38", updated_at: "2017-07-11 07:12:38">
irb(main):009:0>