Item.pending
, Item.active
, Item.disabled
로 확인 가능함item.status == 'active'
라고 기존에 확인했지만item.active?
로 T/F 확인 가능item.disabled!
는 disabled 상태로 바꿔라클래스의 메소드(method)란 어떠한 작업을 수행하기 위한 명령문의 집합
클래스 내에서 메소드는 static 키워드의 여부에 따라 다음과 같이 구분됨
- 클래스 메소드(static method) : 특정 메소드에서 실행할 수 있는 메소드
- 인스턴스 메소드(instance method) : 하나의 객체에서 실행할 수 있는 메소드
=> 클래스 메소드는 클래스 변수와 마찬가지로 인스턴스를 생성하지 않고도 바로 사용할 수 있습니다.
=> 따라서 클래스 메소드는 메소드 내부에서 인스턴스 변수를 사용할 수 없습니다.
# item.rb
def self.puts_item_names
# 여기서 self는 아이템 자기자신을 의미함
# 실제로는 Item.find_each로 작동한다고 생각하면 됨
# 그냥 each를 써서 반복문을 돌려도 되지만, find_each를 쓰는 것이 성능에 더 좋음
# 아이템에 모든 것들을 반복문을 돌면서 각 값을 item에 할당을 하고 아이템의 이름을 출력하겠다
self.find_each do |item|
# 모든 item의 이름을 호출할 수 있게 됨
puts item.name
end
=> Item.puts_item_names
를 레일즈 콘솔에 입력하면, 아이템 이름값만 출력 가능함
#item.rb
# self가 안붙어있음. 그렇다는 것은 인스턴스 메소드라는 얘기임
def puts_item_name
puts self.name
end
레일즈 콘솔
item = Item.last
item.puts_item_name
item에 저장한 해당 값의 이름 출력 됨
nil
은 JS의 null
과 같은 의미로, 이 상황에서는 return값이 없다는 의미임.Item.active
는 클래스 메소드Item.active?
, Item.active!
는 인스턴스 메소드 has_many :likes, dependent: :destroy
has_many :reviews, dependent: :destroy
likes
와 reviews
는 어떤 메소드?resources :orders
class OrdersController < ApiController
def index
orders = current_api_user.orders
render json: each_serialize(orders)
end
end
rails routes|grep items
rails g serializer order_each
resources :users do
resources :items, only: :index
end
=> /users/:user_id/items