showアクションを文字列で
rails3
普通のRailsアプリなら数字でリクエストを送るけど文字列で送りたい。
RedmineのProjectsController#showで同じことやっていたので、ソースを追うとfindメソッドを上書きしてた。
# app/models/project.rb def self.find(*args) if args.first && args.first.is_a?(String) && !args.first.match(/^\d*$/) project = find_by_identifier(*args) raise ActiveRecord::RecordNotFound, "Couldn't find Project with identifier=#{args.first}" if project.nil? project else super end end
この手のことやるのにgemあるけど、普通にオーバーライドしたほうが楽な気がする。
ARの仕様が変わった時に備えてテスト書いておけば心配はいらないですしおすし。
それと、このユニークな文字列を入れておくカラムの名前はidentifierがあるあるなのかな。