Ruby on Rails
Thursday, December 6, 2012
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". 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 rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
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.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment