2009-10-01 5 views
0

J'ai une application qui utilise des sous-domaines pour chaque 'compte'. De ce que j'ai lu, il est bon de "Tie all top-level requests off the current account (subdomain)".Maintien de l'intégrité d'un modèle imbriqué avec des sous-domaines?

par exemple.

def find_users 
    @users = @current_account.users 
end 

Assez simple. Mais quand je commence à avoir des routes profondément imbriquées, je ne peux pas utiliser un routage superficiel sans perdre la portée du sous-domaine.

Alors, comment réaliser un routage peu profond et conserver cette intégrité?

Les seules choses que j'ai pensé sont:

  1. Pour inclure une clé étrangère au niveau supérieur (sous-domaine) dans certains des modèles plus profondément imbriquées. Mais cela semble un peu un hack.

  2. Pour utiliser un before_filter pour remonter les associations et vérifier que le sous-domaine est vrai. Cela semble plus logique mais ne se sent toujours pas bien.

Quelqu'un at-il une opinion à ce sujet?

Répondre

0

Je joue avec acts_as_restricted_subdomain ces derniers temps où une clé étrangère est utilisé, et trouvé incroyablement facile à utiliser:

http://github.com/penguincoder/acts_as_restricted_subdomain 

Il remplace le comportement par défaut de ActiveRecord donc si vous avez un compte/sous-domaine spécifié User.find (123) devient le même que Subdomain.users.find (123) ce qui rend l'écriture de code beaucoup plus propre car elle vous permet d'écrire votre application sans vous soucier des contraintes des sous-domaines. Le principal inconvénient de la clé étrangère est la possibilité que les requêtes db prennent plus de temps à être mises à l'échelle de votre jeu de données, mais la mise dans les index nommés appropriés devrait atténuer cela.

+0

Merci, je vais vérifier le lien – Cameron

Questions connexes