2012-04-12 4 views
0

ich bin beschäftigt mit der Arbeit an einem Projekt, das viele Sub-Domains und Mann verschiedenen Ebenen der Authentifizierung beteiligt ist, würde ich gerne ändern, wie die URL in Abhängigkeit von Ihrem Zugriff aussieht, wir haben Superuser, die hat Zugriff auf alle (nur Programmierer) und dann verschiedene administrative Rechte. Jeder hat Zugriff auf verschiedene Dinge, je nachdem, was er damit zu tun hat, ein Portal-Administrator hat Zugriff auf eine Funktion namens Data_report, nur er und der Superuser können zugreifen, die Art, wie es geroutet wurde, war nur für Superuser-Zugriff gedacht, so die URL zeigt http://toolkit.dev/portal_data/21 21 ist das Konto, von dem der Portaladministrator kommt, aber er muss das nicht sehen, da er nicht auf andere Konten zugreifen kann, wo ein Superuser das tun kann und möchte, gibt es eine Möglichkeit, die 21 in dieser URL einfach zu verstecken Übergeben Sie es an den gleichen Ort. so konnte der Superuser die Kontonummern sehen und wenn es ein portal_administrator wäre, dann würde er nicht ??Rails eindeutige Routing-Namen

meine Routen dieses aussehen wie:

map.resources :portal_data, :only => [:show, :create] 
map.show_account_portal_datum '/portal_data/:id/account/:account_id/', :controller => 'portal_data', :action => 'show_account' 

der Controller, es bezieht sich auf ein Verfahren zur hat

def show_account 
    @account = @portal.accounts.find(params[:account_id]) 
end 

sorry, wenn es sich um eine einfache Frage seine mein erstes Mal den Umgang mit Routen ist.

+0

Ich glaube nicht, dass dies eine normale Anforderung ist ... –

Antwort

1

Ich denke in diesem Fall braucht der Portal-Admin auch keine Indexseite. Wie wäre es, wenn Sie dies nur in der Indexaktion überprüfen und die Ansicht, die der Show-Vorgang ausführt, rendern (keine Weiterleitung), wenn der aktuell angemeldete Benutzer ein Portaladministrator ist?

Nur eine schnelle Idee, weiß nicht, ob es Ihren Bedürfnissen entsprechen würde.

+0

das ist, was ich auch dachte, aber es ist nicht sehr trocken, da es genau den gleichen Code ist, und es ist bereits ein monolithisches Programm. Wonach ich suche, ist so etwas wie ein Match? zum Beispiel: match 'show_account' => 'portal_data' ... brauche nur eine Möglichkeit, sie vom Super User zu trennen ... mmm danke ich bin brain storming viel lol – TheLegend

+0

Hmm, jep, das wäre nicht komplett trocken, aber du Ich könnte eine Methode für die Logik und die zwei Aktionen nur als Gateways verwenden, denke ich ... Ich kenne keine Möglichkeit für passende Routen wie in deinem Beispiel, sorry. – dhoelzgen

+0

Es ist cool, der einzige Grund, warum ich versuchte, ist, weil ich einen unserer älteren Entwickler zufällig hörte über ein Problem ähnlich zu lösen, indem er es so macht .. krank gehen fragen ihn um etwas Hilfe. Danke für die Vorschläge aber: D – TheLegend