💎 Ruby class privateについて
作成日: 2021/07/12
0

Rubyにおいてのclass


class User
  def initialize(name, password)
    @name = name
    @password = password
  end

  def name
    p @name
  end

  def password
    p @password
  end
end

※def initialize(変数1, 変数2) classを使用時、初めに宣言すると初期値を設定
今回は変数を入れているが空(から)の設定も出来ます。

class User
  def initialize()
    @name = ''
    @password = ''

記述を終えたら、下記の流れで呼び出す。

  1. User.newでインスタンス作成
user = User.new('hoge', '1234')
  1. 各メソッドの呼び出し
user.name
>>hoge
user.password
>>1234

追記


書き込み専用メソッドを定義していないので当然errorになります。

user.name = 'hogehoge'
>>(irb):142:in `<main>': undefined method `name=' for #<Testuser:0x000055ee20444f30 @name="hoge", @password="1234"> (NoMethodError)
Did you mean?  name

下記のコードを追加

# セッター
  def name=(name)
    @name = name
  end

  def password=(password)
    @password = password
  end

# ゲッター
  def name
    @name
  end

  def password
    @password
  end

上記のコードを短くも出来ます。

class User
  attr_reader :name, :password # セッター :nameなどはインスタンス変数名 @は不要
  attr_writer :name, :password  # ゲッター

  def initialize
    @name = ''
    @password = ''
  end
end

ふとVuexみたいやなと思ったが、全然違うよね‥

Rubyにおいてのprivate


class user
  def initialize(name, password)
    @name = name
    @password = password
  end
  def name
    p @name
  end

  def password_confirmation(confirmation)
    if password == confirmation
      p '入力したパスワードは正しいです'
    else
      p '入力したパスワードは違います'
    end
  end
  
  private

  def password
    @password
  end
end

※privateは、そのclass内のみで使えるメソッド
ちなみに.privateで呼び出すと・・・

you = User.new('hoge', '1234')
you.private
`<main>': private method `password' called for #<Yousyo:0x000055ee22c5e8b8 @name="hoge", @password="1234"> (NoMethodError)

記述を終えたら、下記の流れで呼び出す
1.User.newでインスタンス作成

user = User.new('hoge', '1234')

2.各メソッドの呼び出し

User.name
>>hoge
User.password_confirmation('1234') 
>>入力したパスワードは正しいです
User.password_confirmation('5678')
>>入力したパスワードは違います

memo


空判定

if user.password.empty?
  p '空っぽ'
end



  
参考にさせて頂いた動画・サイト ありがとうございます!!

【Ruby】rails のための Ruby 入門(初心者必見!)
【Ruby基礎】インスタンス変数とは
initializeメソッド
【Ruby】 attr_writerメソッド使ってコードの可読性を上げよう

Laravel勉強中