teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

追加で編集しました

2022/01/03 10:15

投稿

y-kou
y-kou

スコア7

title CHANGED
File without changes
body CHANGED
@@ -45,4 +45,4 @@
45
45
  => #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil, password_digest: nil, remember_digest: nil>
46
46
  ```
47
47
 
48
- 通常のrubyではinitializeなどでインスタンス変数が定義されると思うのですが、上のようにrailstutorialなどのuser.rb(userクラス)ではそれらしい定義がありません。これはマイグレーションファイルでカラムに追加する際同時にインスタンス変数の種類も追加されると解釈してよいのですか?ご回答よろしくお願いいたします。
48
+ 通常のrubyではinitializeなどでインスタンス変数が定義されると思うのですが、上のようにrailstutorialなどのuser.rb(userクラス)ではそれらしい定義がありません(nameやemail,passsord_digestなど)。これはマイグレーションファイルでカラムに追加する際同時にインスタンス変数の種類も追加されると解釈してよいのですか?ご回答よろしくお願いいたします。

1

説明足らずですいません。user.rbのコードを追加しておきました。

2022/01/03 10:15

投稿

y-kou
y-kou

スコア7

title CHANGED
File without changes
body CHANGED
@@ -1,1 +1,48 @@
1
- 素人質問ですいません。railsではそれぞれのオブジェクトが持つインスタンス変数はどこで定義されるのでしょうか?通常のrubyではinitializeなどで定義されると思うのですがrailstutorialなどのuserクラスではそれらしい定義がありません。これはマイグレーションファイルでカラムに追加する際同時にインスタンス変数も定義されると解釈してよいのですか?ご回答よろしくお願いいたします。
1
+ 素人質問ですいません。railsではそれぞれのオブジェクトが持つインスタンス変数はどこで定義されるのでしょうか?
2
+
3
+ app/models/user.rb
4
+ ```
5
+ class User < ApplicationRecord
6
+ attr_accessor :remember_token
7
+ before_save{self.email = self.email.downcase}
8
+ validates :name, presence: true, length: {maximum: 50}
9
+ VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(.[a-z\d\-]+)*.[a-z]+\z/i
10
+ validates :email, presence: true, length: {maximum: 255},
11
+ format: {with: VALID_EMAIL_REGEX},
12
+ uniqueness: { case_sensitive: false}
13
+ has_secure_password
14
+ validates :password, presence: true, length: {minimum: 6}
15
+
16
+ class << self
17
+ def new_token
18
+ SecureRandom.urlsafe_base64
19
+ end
20
+
21
+ def digest(string)
22
+ cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST :
23
+ BCrypt::Engine.cost
24
+ BCrypt::Password.create(string, cost: cost)
25
+ end
26
+ end
27
+
28
+ def remember
29
+ self.remember_token = User.new_token
30
+ update_attribute(:remember_digest, User.digest(remember_token))
31
+ end
32
+
33
+ def authenticated?(remember_token)
34
+ BCrypt::Password.new(self.remember_digest).is_password?(remember_token)
35
+ end
36
+
37
+ end
38
+
39
+ ```
40
+
41
+
42
+ rails c
43
+ ```
44
+ irb(main):001:0> User.new
45
+ => #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil, password_digest: nil, remember_digest: nil>
46
+ ```
47
+
48
+ 通常のrubyではinitializeなどでインスタンス変数が定義されると思うのですが、上のようにrailstutorialなどのuser.rb(userクラス)ではそれらしい定義がありません。これはマイグレーションファイルでカラムに追加する際同時にインスタンス変数の種類も追加されると解釈してよいのですか?ご回答よろしくお願いいたします。