Frage

Ich bin mit Rails 3 und Devise.

kann ich zwei Arten von Benutzern haben Ich rufe ‚admin‘ und ‚Client‘, gespeichert sowohl in der Tabelle Benutzer, differenziert nach dem Wert des boolean ‚admin‘ Spalte.

Ein 'admin' kann zwei Arten erstellt werden:

1) Bei der Erstellung eines neuen Kontos - in diesem Fall sind wir auch ein zugehöriges ‚Geschäft‘ Datensatz

erstellen

2) Innerhalb eines bestehenden Kontos (so ein ‚Geschäft‘ können mehrere ‚admins‘ haben) - im Fall wollen wir es mit einem bestehenden Geschäftsunter

assoziieren

Ein 'Kunde' kann 1 Art und Weise erstellt werden:

1) von einer Form trennen als das verwendet, um ein 'admin' erstellen oben

In allen 3 Fällen eine andere Form verwendet werden. Und nach Vorlage sie alle haben unterschiedliche Anforderungen:

  • Ich möchte verschiedene E-Mails an jeden senden.
  • Im ersten ‚admin‘ Fall oben ich überprüfen müssen, ob die angeforderte Unternehmens-URL eindeutig zuzuordnen sind, im zweiten Fall habe ich nicht. Und in dem Client-Fall weiß ich nicht.
  • In der ersten ‚admin‘ Fall möchte ich einige Standard-Datenbankeinträge nach Abschluss eines Kontos schaffen, aber nicht im zweiten Fall.
  • Wenn ein ‚Kunde‘ Konto erstellt wird ich einige andere Aktionen spezifisch für diesen Kontotyp ausgeführt werden soll.

Sollte ich die gleiche Steuerung für die verschiedenen Benutzertypen, oder sie trennen? Wenn sie gleich sein sollten, wie weiß es, was Art von Benutzer sollte es schaffen?

Was ist mit den Modellen?

Alle Gedanken, wie man Architekten das?

Vielen Dank.

War es hilfreich?

Lösung

Meine erste Vermutung wäre, zwei Unterklassen zu erstellen, die von User genannt Admin und Client. Ein bisschen wie folgt aus:

class User < ActiveRecord::Base
end

class Admin < User
  devise :database_authenticatable, :etc

  after_create :create_business
  validates_uniqueness_of :business_url
  # etc
end

class Client < User
  devise :database_authenticatable, :etc
  # etc
end

Als Nächstes können Sie verschiedene Formen in config/routes.rb hinzufügen:

YourApp::Application.routes.draw do

  # for the cases that someone can create their own user
  devise_for :clients
  devise_for :admins

  # for creating it when logged in as admin
  namespace :backend do
    resources :admins
  end
end

Achten Sie darauf, in Rails auf STI zu lesen, und die Dokumentation der Devise lesen.

Andere Tipps

Sie können diese mit verschiedenen Aktionen einen Controller verwenden und Ihre Formulare auf diese Aktionen richten:

form_tag(:controller => "people", :action => "search", :method => "get")

Schienen bilden Helfer .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top