I have a number of different models in the Rails app I\'m working on. I\'ve seen a number of sites use an app-wide slug routing approach. What do I mean by this?
My first reaction is to create a new Slug model. This model would have a polymorphic belongs_to:
belongs_to :sluggable, :polymorphic => true
At the least this table would have:
value - Or some better name than this. The value of the slug itself.sluggable_type and sluggable_id - The polymorphic foreign keys.Your company, user, etc. models models would just have a slug:
has_one :slug
This gives us a few advantages off the bat:
resource route off of the root level namespace. You would want to keep it low/at-the-end of the route file though so other more specific routes take precedence. Edit: This routing is basically the first routing method j_mcnally suggests.In terms of how the controller would work, I'd go with what Kyle said and key off the sluggable_type field to find the view you want to render.