iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 27
1

PORO : Plain Old Ruby Object

簡單的沒有任何繼承關係的純Ruby物件
可以讓Model和Controller代碼能夠更加精簡,讓一個 class 只需要負責一件事,達到 Single Responsibility Principle,還可增加彈性、容易重複使用並且容易測試。
PORO也可以實現類似model的功能,有些數據不需要儲存到數據庫,可以用PORO代替 (ex 購物車測試的Cart Model)
一些運算邏輯不屬於model範疇,例如流程控制或是牽涉到其它model,應該要切出另一個非ActiveRecord(PORO)的class來處理。

PORO為 Plain Old Ruby Object的縮寫,翻譯成:簡單的沒有任何繼承關係的純Ruby物件。

這個Cat物件沒有任何繼承關係,是一個簡單的Ruby物件:

class Cat
end

mycat = Cat.new

可以加一些方法進行讀取:

class Cat
  attr_reader :name
  def initialize(name)
      @name = name
  end
end

mycat = Cat.new('kitty')
mycat.name  # 'kitty'

上面這個Cat物件就是一種PORO


上一篇
DAY 26 Rails Validators / 回呼Callback
下一篇
DAY 28 使用 render/jbuilder 輸出 JSON 格式
系列文
毫無基礎學習 Ruby on Rails 的 甘苦心得30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言