LoginSignup
0
0

More than 1 year has passed since last update.

rails クラスメソッドの勘違いしたこと

Posted at

備忘録

そんな挙動だったの!?ってなったやつです。
なぜそうなるのかわからないので しってる人いたら

前提

group、userクラスがある
groupにユーザーが紐づいている

class Group
  has_many :users, dependent: :destroy
class User
   belongs_to :group

下記みたいな感じ
今回はgroupAに3件userが紐づいてる
User全体では100件存在している

Use.count
=> 100
group_a.users
→ [user1, user2, user3]
3件紐づいている

user1.group 
→ group_a 

クラスメソッド呼び出し側

コントローラー側から呼んでます

 group_a.users.to_count

モデル側クラスメソッド

user.rb

  def self.to_count
     User.count
  end

結果

group_a.users.to_count
=> 3

つまり

User.countだと100件返ってくる想定だとおもって作っていたんですが
レシーバーの分しかカウントが取得できない

group_a.users=Userみたいな扱いになっている認識になりました。

勝手な考察

クラスメソッド定義する際に
def self.to_count
もしくは
def User.to_count
で定義ができる
つまりself = USer
selfはレシーバーが入るので

レシーバー = self = User

になるのかな?と考えています。

だれか真相を教えてください(>_<)

0
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
0
0