MOE3: Rails4 の find_by

find_by メソッド

小ネタ。

今さら知ったが、Rails4 では find_by_xxx 系のメソッドが非推奨となり、代わりにfind_by メソッドが導入されていた。

元々 method_missing で泥臭いことをやっていたっぽい find_by_xxx が好きになれず、専ら wherefirst の組み合わせを使用していたので早速導入。

app/models/order_status.rb

Before。

class OrderStatus < ActiveRecord::Base
  UNEXECUTED = OrderStatus.where(code:   0).first
  INVALID    = OrderStatus.where(code: 100).first
  SUCCESS    = OrderStatus.where(code: 200).first
  SATISFIED  = OrderStatus.where(code: 201).first
  FAILURE    = OrderStatus.where(code: 300).first
  CUT        = OrderStatus.where(code: 301).first
  STANDOFF   = OrderStatus.where(code: 302).first
  DISLODGED  = OrderStatus.where(code: 303).first
  CONFLICT   = OrderStatus.where(code: 400).first
  DISBANDED  = OrderStatus.where(code: 401).first
end

After。

class OrderStatus < ActiveRecord::Base
  UNEXECUTED = OrderStatus.find_by(code:   0)
  INVALID    = OrderStatus.find_by(code: 100)
  SUCCESS    = OrderStatus.find_by(code: 200)
  SATISFIED  = OrderStatus.find_by(code: 201)
  FAILURE    = OrderStatus.find_by(code: 300)
  CUT        = OrderStatus.find_by(code: 301)
  STANDOFF   = OrderStatus.find_by(code: 302)
  DISLODGED  = OrderStatus.find_by(code: 303)
  CONFLICT   = OrderStatus.find_by(code: 400)
  DISBANDED  = OrderStatus.find_by(code: 401)
end

わずかな違いだがすっきり。