IT技術にまつわる実験ノート

「長編を書くより、短編を数多く完成させてください。それが上達への近道です」 by 手塚治虫

Rails の application_controller.rb で private メソッドにするのはなんでなのか?

結論

Application Controller のサブクラスで使うメソッドを定義するため。Ruby の private メソッドはサブクラスからも呼び出せる。

この点は Ruby の基本的な機能であるためか、Rails の技術書では、しれっと書かれてていて、継承時の private メソッドの動作について、何の説明もない場合がある。

f:id:matt-note:20190211121324p:plain

f:id:matt-note:20190211121306p:plain

f:id:matt-note:20190211123851p:plain

 

使ってみる

f:id:matt-note:20190212114839p:plain

f:id:matt-note:20190212114913p:plain

-> サブクラスから親クラスの private メソッドを呼び出すことができた。

 

親クラスの private メソッドを直接呼び出してみる。

f:id:matt-note:20190211124948p:plain

f:id:matt-note:20190211125009p:plain

-> 親クラスの private メソッドを直接呼び出すとエラーになる。