類別中的方法主要可以分成實體方法(instance methods)和類別方法(class methods):
實體方法(instance method):能夠在實例上被使用的方法,大部分類別中的方法都是屬於實例方法。
類別方法(class method):能夠在類別(class)上被使用的方法
1.在 class 中直接建立的 method 就是 instance method
2.它可以被該 class 所建立的 instance 所使用,亦可代入參數
class Cat
def hello(name)
puts "Hello #{name}"
end
end
instance = Cat.new # 實際.new出一個屬於Cat的實體物件instance
instance.hello "Kitty" # 這個 hello method,直接作為於實體 instance 上,稱作 instance method。
給類別本身所使用的方法,它不需要製造出實體物件就可以使用
class PostsController < ApplicationController
def index
@posts = Post.all # 取得所有的 Post 資料
end
end
這裡的 all 方法是直接作用在 Post 這個「類別」上,故稱之類別方法。
class Cat
def self.all
# ...
end
end
class Cat
#實體方法放這裡
class << self
def all #類別方法放這裡
#...
end
end
end