素人質問ですいません。railsではそれぞれのオブジェクトが持つインスタンス変数はどこで定義されるのでしょうか?
app/models/user.rb
class User < ApplicationRecord attr_accessor :remember_token before_save{self.email = self.email.downcase} validates :name, presence: true, length: {maximum: 50} VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(.[a-z\d\-]+)*.[a-z]+\z/i validates :email, presence: true, length: {maximum: 255}, format: {with: VALID_EMAIL_REGEX}, uniqueness: { case_sensitive: false} has_secure_password validates :password, presence: true, length: {minimum: 6} class << self def new_token SecureRandom.urlsafe_base64 end def digest(string) cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST : BCrypt::Engine.cost BCrypt::Password.create(string, cost: cost) end end def remember self.remember_token = User.new_token update_attribute(:remember_digest, User.digest(remember_token)) end def authenticated?(remember_token) BCrypt::Password.new(self.remember_digest).is_password?(remember_token) end end
rails c
irb(main):001:0> User.new => #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil, password_digest: nil, remember_digest: nil>
通常のrubyではinitializeなどでインスタンス変数が定義されると思うのですが、上のようにrailstutorialなどのuser.rb(userクラス)ではそれらしい定義がありません(nameやemail,passsord_digestなど)。これはマイグレーションファイルでカラムに追加する際同時にインスタンス変数の種類も追加されると解釈してよいのですか?ご回答よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー