今日どうしようか悩んだところをメモ。
背景
nameとcount属性を持つモデルHogeがあるとして、nameが存在していればcountを1増やし、nameがなければ新しく作ってsaveするメソッドincreaseを作るとする。この時に、Hogeの初期のcountを1にするか0にするかでアルゴリズムが少し変わる。
アルゴリズム例
初期値1の場合
class Hoge def self.increase(name) hoge = find_by_name(name) if hoge hoge.count += 1 else hoge = Hoge.new(:name => name) end hoge.save end end
初期値0の場合
class Hoge def self.increase(name) hoge = find_by_name(name) || new(:name => name) hoge.count += 1 hoge.save end end