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.