All,
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.
Thanks.
On Thu, Jul 3, 2008 at 5:42 AM, Rajmohan B.
[email protected] 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:
-
Use the account_location plugin.
-
Make “www” a reserved subdomain.
-
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
- 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.