LoginSignup
1
0

More than 3 years have passed since last update.

rails 発展その10 レシーバ self

Last updated at Posted at 2019-11-12

コードを書いていくと内容の繰り返しが多くなりやすくなるので
それを省略できる方法のまとめを使用と思います。

レシーバ

インスタンスメソッドを利用するインスタンス自身のことです。

   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のメソッドを使うことができます。-->
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0