Hi Loganathan,

On Thursday, December 6, 2012 4:12:22 AM UTC-6, Loganathan Sellappa wrote:
>
> Please have a look on to the www.shopify.com, where each user can create 
> a store with unique domain(subdomain) name like "www.logan.shopify.com".
>


This is the stereotypical Rails approach to multi-tenancy.  The database 
contains, in the case of Shopify, the products of many stores (logan is a 
store).  The key to multi-tenant apps is to ensure that all requests are 
scoped to a specific store.  In order to accomplish this in a Rails app a 
before_filter is used in application_controller.rb.  It typically looks 
like this.

def current_store
  @current_store ||= Store.where("subdomain = ?", request.subdomains.last)
end

The request to retrieve products (current_store.products) will retrieve 
only those records that belong to the correct (per the url) store.

 

>
> Currently I creating the same kind of application but I need an extra 
> feature where user can choose their own domain name while store 
> registration process like "www.logan.com" instead of  "
> www.logan.shopify.com <http://www.loganathan.shopify.com>". The thing is 
> user can point their store with their own domain(can be registered with 
> any providers like Godaddy,Dreamhost) instead of subdomain.
>


I'm assuming that you mean you want the user to be able to choose to use 
one or the other.  You'll probably get more readable code by adding a 
domain field to the stores table and have it default to your app's domain.  
The current_store method could end up looking something like...

def current_store
  unless @current_store
     if request.domain == 'shopify.com'
       @current_store = Store.where("subdomain = ?", 
request.subdomains.last)
     else
        @current_store = Store.where("domain = ?", request.domain)
     end
  end
  @current_store
end

HTH,
Bill 


-- 
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 [email protected].
To unsubscribe from this group, send email to 
[email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msg/rubyonrails-talk/-/2P-d4PGdgp4J.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to