On Thu, Jul 3, 2008 at 5:42 AM, Rajmohan Banavi
<rajmohanbanavi-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> I am not sure if this is sub-domain handling, but am interested on how this
> can be handled in rails.
>
> How can an app handle the traffic to, say - http://part1.mydomain.com. The
> other normal traffic I guess will be handled by the main controller (of
> www.mydomain.com). Any pointers to any tutorial/books appreciated.
The basic steps are:
1. Use the account_location plugin.
2. Make "www" a reserved subdomain.
3. Put these filters in ApplicationController:
# We need this redirection not only for users, I founded that some bots
# request public pages to myapplication.com directly. We need to respond
# with the appropiate redirection so they don''t index the error page.
# They would because the error page is a successful HTTP response.
def ensure_subdomain
if account_subdomain.blank?
redirect_to_url
"http://www.#{account_domain}#{request.request_uri}"
end
end
def find_account
@current_account = Account.find_by_short_name(account_subdomain)
if !@current_account
logger.info("there''s no account with short name
#{account_subdomain}, redirecting to the home")
redirect_to_url "http://www.#{account_domain}"
end
end
4. Be very careful, scope everything by @current_account if necessary.
For example modify User.authenticate to receive an account:
def self.authenticate(account, email, password)
u = account.users.find_by_email(email) # user needed to get the salt
u && u.authenticated?(password) ? u : nil
end
and in general DO NOT use find over classes as in
Project.find(...) # WARNING, APPLICATION-WIDE
but instead
@current_account.projects.find(...) # GOOD
That''s a guideline and exceptions depend on the application, for
example
@current_user.projects.find(...)
may be already fine because you''ve validated that @current_user
belongs to @current_account somehow etc.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---