¿Forma de carriles para representar diferentes acciones y vistas según el tipo de usuario?

Tengo un par de tipos de usuarios diferentes (compradores, vendedores, administradores).

Me gustaría que todos tengan la misma URL account_path, pero que usen una acción y vista diferentes.

Estoy intentando algo como esto ...

class AccountsController < ApplicationController
  before_filter :render_by_user, :only => [:show]

  def show
   # see *_show below
  end

  def admin_show
    ...
  end

  def buyer_show
    ...
  end

  def client_show
    ...
  end
end

Así es como definí render_by_user en ApplicationController ...

  def render_by_user
    action = "#{current_user.class.to_s.downcase}_#{action_name}"
    if self.respond_to?(action) 
      instance_variable_set("@#{current_user.class.to_s.downcase}", current_user) # e.g. set @model to current_user
      self.send(action)
    else
      flash[:error] ||= "You're not authorized to do that."
      redirect_to root_path
    end
  end

Llama al método correcto * _show en el controlador. Pero aun así trata de representar "show.html.erb" y no busca la plantilla correcta que tengo ahí llamada "admin_show.html.erb" "buyer_show.html.erb", etc.

Sé que puedo llamar manualmenterender "admin_show" en cada acción, pero pensé que podría haber una forma más limpia de hacer todo esto en el filtro anterior.

¿O alguien más ha visto un complemento o una forma más elegante de dividir acciones y vistas por tipo de usuario? ¡Gracias!

Por cierto, estoy usando Rails 3 (en caso de que haga la diferencia).

Respuestas a la pregunta(1)

Su respuesta a la pregunta