【42日目】【1日20分のRailsチュートリアル】【第6章】ユーザーオブジェクトを作成
今日は「6.1.2 modelファイル」から。
6.1.2 modelファイル
生成したUserモデルのコード確認。
ActiveRecord::Baseクラスを継承している。
app/models/user.rb
class User < ActiveRecord::Base end
6.1.3 ユーザーオブジェクトを作成する
データベースを変更しないためにサンドボックスモードとやらでコンソールを起動。
$ rails console --sandbox Loading development environment in sandbox (Rails 4.2.2) Any modifications you make will be rolled back on exit >>
コンソールで加えた変更はコンソール終了時にロールバックしてくれるらしい。
>> User.new => #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil>
引数なしのUser.newは各属性がnil
で生成される。
>> user = User.new(name: "Michael Hartl", email: "mhartl@example.com") => #<User id: nil, name: "Michael Hartl", email: "mhartl@example.com", created_at: nil, updated_at: nil>
引数にnameとか指定すれば値が入った状態でUserオブジェクトが生成される。
created_at
とかは勝手に作成日が入るわけじゃないのかー。
>> user.save (0.1ms) SAVEPOINT active_record_1 SQL (0.4ms) INSERT INTO "users" ("name", "email", "created_at", "updated_at") VALUES (?, ?, ?, ?) [["name", "Michael Hartl"], ["email", "mhartl@example.com"], ["created_at", "2016-09-21 03:12:53.424712"], ["updated_at", "2016-09-21 03:12:53.424712"]] (0.1ms) RELEASE SAVEPOINT active_record_1 => true
と思ってたらデータベースに保存するときに値が入るらしい。
Active Recordを使う上では気にしなくて良さそうかな?
作成した時点でのユーザーオブジェクトは、id属性、マジックカラムであるcreated_at属性とupdated_at属性の値がいずれもnilであったことを思い出してください。saveメソッドを実行した後に何が変更されたのかを確認してみましょう。
idには1という値が代入され、一方でマジックカラムには現在の日時が代入されているのがわかります。
チュートリアルでも言及されてた。
idと作成日/更新日はわざわざ指定する必要はないんだね。
destroy
はデータベースからレコードを削除するっぽい。
>> foo = User.create(name: "Foo", email: "foo@bar.com")] (0.1ms) SAVEPOINT active_record_1 SQL (0.6ms) INSERT INTO "users" ("name", "email", "created_at", "updated_at") VALUES (?, ?, ?, ?) [["name", "Foo"], ["email", "foo@bar.com"], ["created_at", "2016-09-21 03:32:40.187698"], ["updated_at", "2016-09-21 03:32:40.187698"]] (0.1ms) RELEASE SAVEPOINT active_record_1 => #<User id: 2, name: "Foo", email: "foo@bar.com", created_at: "2016-09-21 03:32:40", updated_at: "2016-09-21 03:32:40"> >> foo.destroy (0.1ms) SAVEPOINT active_record_1 SQL (0.1ms) DELETE FROM "users" WHERE "users"."id" = ? [["id", 2]] (0.1ms) RELEASE SAVEPOINT active_record_1
今日の作業時間は【23分】。
次は「6.1.4 ユーザーオブジェクトを検索する」から。