$ rails c
>> Story.last.previous
=> #<Story id: 1, title: "パンドラ(禁后)", body: "私の故郷に伝わっていた「禁后」というものにまつわる話です。\nどう読むのかは最後までわかりませんでしたが...", view: 0, user_id: 1, created_at: "2011-11-25 08:48:33", updated_at: "2011-11-25 08:48:33", comments_count: 0, scares_count: 0>

バグ報告からふとActiveRecordで使えるpreviousメソッドってどこからきてるんだろう?と思ってgemsをgrepしてみるも見当たらず。

┐(´ー`)┌「これだからメタプログラミングってやつは・・・」.

Twitter / @irohiroki: @komagata Method#source_lo ...

なんですと!よし、場所を探り当ててやる!

>> Story.last.method(:previous).source_location
=> ["/Users/komagata/code/kowabana-jp/app/models/story.rb", 38]

( ゚д゚)

(つд⊂)ゴシゴシ

# app/models/story.rb:
class Story < ActiveRecord::Base
  def previous
    Story.where('id < ?', id).order('id').limit(1).last
  end
end

(((((((( ;゚Д゚)))))))

自分で普通にmodelに定義してた。

因みに複数人開発で他人が実装したとかではなく、紛れも無く俺が実装したメソッドである。おまけにテストも書いてある。

何故このような自体が発生したのか。それはメソッド名が自然過ぎたか、俺がアルツハイマーか、もしくはその両方である。

Comments


Option