Есть несколько способов сделать это.Один из способов - определить и вызвать пользовательскую ошибку и иметь обработчик, который перенаправляет при этом.
application_controller.rb
Class ApplicationController < ActionController::Base
around_filter :catch_errors
def catch_errors
yield
rescue SiteNotFoundError
redirect_to website_url(@website), :status => 301
rescue ActiveRecord::RecordNotFound
render 404
rescue ...
...
...
end
end
class SiteNotFoundError < StandardError; end
в контроллере
def your_action
raise SiteNotFoundError if (some condition)
end
или перед фильтром
before_filter :ensure_valid_site
def ensure_valid_site
raise SiteNotFoundError if ....
end