コードを書いていくと内容の繰り返しが多くなりやすくなるので
それを省略できる方法のまとめを使用と思います。
レシーバ
インスタンスメソッドを利用するインスタンス自身のことです。
re = "9"
#以下の式のレシーバはstr
re.to_i #=> 9
self
インスタンスメソッドの中でselfと書くと
そのメソッドを利用したレシーバ自身が代入された変数のように扱うことができます。
class Integer
def kake?
if self * 10 == 1
return true
else
return false
end
end
end
10.kake? #=> false(*は乗算を求めるもので、1ではないのでfalseが返ってくる)
railsでの使用例
ポイントの平均を求めたいメソッドを打つ場合
controller
class Product < ApplicationRecord
def point_average
self.points.average(:rate).round
end
# selfの省略も可能
def point_average
points.average(:rate).round
end
end
仮にクラス名をその都度合わせるコードを描きたい場合は
view
<i class="point rate-<%= product.point_average %>0"></i>
<!--これでコントローラーからproductをレシーバとしてpoint_averageのメソッドを使うことができます。-->