クラスから生成されたオブジェクトは、生成元クラスで使用できるメソッドを使用できると理解していたのですが、下記の通り、User.find(1)は正常に動作するものの、user.find(1)とするとNo method Errorになります。
findメソッドはあくまでクラスメソッドであって、Userクラスに定義されていない為、userオブジェクトで使用できないということでしょうか。
該当のソースコード
class User < ApplicationRecord end 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> >> user.save (0.1ms) SAVEPOINT active_record_1 SQL (2.2ms) INSERT INTO "users" ("name", "email", "created_at", "updated_at") VALUES (?, ?, ?, ?) [["name", "Michael Hartl"], ["email", "mhartl@example.com"], ["created_at", "2019-06-02 20:03:16.253871"], ["updated_at", "2019-06-02 20:03:16.253871"]] >> user.find(1) Traceback (most recent call last): 1: from (irb):13 NoMethodError (undefined method `find' for #<User:0x0000000003cbda88>) >> User.find(1) User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] => #<User id: 1, name: "Michael Hartl", email: "mhartl@example.com", created_at: "2019-06-02 20:03:16", updated_at: "2019-06-02 20:03:16">
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/03 10:33
2019/06/03 12:02