You can create separate layouts for each theme.
Under app/views/layouts/theme_one_base.html.haml
<html>
  <head>
    <%= stylesheet_link_tag "application" %>
  </head>
  <body id='theme_one'>
    <%= yield %>
  </body>
</html>
You can specify the layout to use in your application controller, and that could be an environment variable.
class ApplicationController < ActionController::Base
    layout 'theme_one'
end
If this is not enough and each theme requires it's own set of stylesheets you can split them up like so.
In app/assets/stylesheets/, the directory would look like
theme_one.css.scss
theme_one/
And the manifest file theme_one.css.scss contains
/**
*= require_self
*= require_tree ./theme_one
*/
And you would update the base_layout.html.haml
<html>
  <head>
    <%= stylesheet_link_tag "theme_one" %>
  </head>
  <body>
    <%= yield %>
  </body>
</html>
Basically each base layout includes it's own set of independent stylesheets.
Update 1 - adding info on overriding layouts