Privateメソッドとは何か
クラス外からは呼び出せず、クラス内でのみ使えるメソッドのこと。
(インスタンスを作ってprivateメソッドを直接呼び出すということができない)
HogeHoge.rb
# encoding: UTF-8
class HogeHoge
def hoge_method
p("ほげほげ")
end
def call_private_hoge_method
p("プライベートな情報を取得する前の事前作業")
p(".........")
private_hoge_method
end
private
def private_hoge_method
p("プライベートな情報を取得!")
end
end
hogehoge = HogeHoge.new
hogehoge.hoge_method
hogehoge.call_private_hoge_method
hogehoge.private_hoge_method # 直接呼び出すとエラーになる
ruby hogehoge.rb
"ほげほげ"
"プライベートな情報を取得する前の事前作業"
"........."
"プライベートな情報を取得!"
Traceback (most recent call last):
hoge.rb:25:in `<main>': private method `private_hoge_method' called for #<HogeHoge:0x00007fadd6900688> (NoMethodError)
privateメソッドはどういう時に使うのか?
適切な順番で呼び出す必要があるメソッドだったり、
外から呼び出されると内部状態に問題が生じる場合に設定する時にprivateメソッドを使う。
下記の記事がとても参考になった。
余談
Railsでprivateメソッドを定義する時は、
モデルではvalidateとかコールバック関数、
コントローラーではストロングパラメータを使う時
定義している印象がある。
参考文献: