Support for custom params
seizmo opened this issue · 4 comments
We use a multi-database based multi-tenant model in our app. This is not supported by the current gid format. A job scheduler has no way of finding out if "gid://MultiTenantApp/User/1" references the user in the database "tenant_1" or "tenant_2".
Some way to include the database name or tenant id would be very useful. Alternatively some way to easily add custom fields to gid would certainly be helpful.
❤️
On Wednesday, October 8, 2014, Kasper Timm Hansen notifications@github.com
wrote:
—
Reply to this email directly or view it on GitHub
#39 (comment).
@jeremy I'm curious about your opinion on "app" when it comes to the concept of a GlobalID and multi-database tenancy setups.
If the GID is a hierarchy, it seems like it's descending in specificity from App, to Model, to ID, to params.
If you're in a multi-tenant setup that uses different databases (or, like in our case, different schemas) then ids for objects can increment independently as though there in entirely different apps.
Thus, User.find(1)
would return different records based on the current customer.
Using params support for tenants, the gids would look like this:
gid://MyApp/User/1?tenant=customer1
gid://MyApp/User/1?tenant=customer2
But, I've been playing with that for a little while and it feels out of place in the specificity. The tenant param feels to me like metadata, when it's actually core to the context of the object. You couldn't switch over to a different customer and find the object with the other customer's gid. In the hierarchy, it might better be placed between App and Model, like App -> Tenant -> Model -> ID.
Given the current structure of GlobalID, would it make sense to have one app per tenant, like this:
gid://MyApp-customer1/User/1
gid://MyApp-customer2/User/1
Do you see any issues with that? Am I thinking about GlobalIDs wrong?