$ 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してみるも見当たらず。
┐(´ー`)┌「これだからメタプログラミングってやつは・・・」.
なんですと!よし、場所を探り当ててやる!
>> 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に定義してた。
因みに複数人開発で他人が実装したとかではなく、紛れも無く俺が実装したメソッドである。おまけにテストも書いてある。
何故このような自体が発生したのか。それはメソッド名が自然過ぎたか、俺がアルツハイマーか、もしくはその両方である。