Ho più account ciascuno i propri utenti, e desidera che l'indirizzo di posta elettronica degli utenti a un solo essere unico per account

StackOverflow https://stackoverflow.com/questions/4003832

Domanda

Sto usando le rotaie per costruire una web app che fornisce ogni impresa con il suo conto proprio e sottodominio, Simile a come campo base (e altre applicazioni 37 segnali) lighthouseapp.com, e così via.

Ora so che ci sono un sacco di tutorial decente su come fare sottodomini in Rails, e anche il plugin sottodominio-fu.

Il fatto è che voglio utilizzare l'indirizzo di posta elettronica degli utenti come il loro accesso, il che significa che deve essere unico, ma solo io voglio che sia unica per ogni account, piuttosto che tutti gli account.

Sto usando testamentaria per l'autenticazione, e ho creato un modello di "Account", che rappresenta l'account, e un modello utente per rappresentare gli utenti per l'account. Devise opera sul modello di utente, e sembrerebbe che sarebbe necessario ad ogni utente di avere un unico indirizzo email.

ho dichiarato il problema in modo sufficientemente chiaro? Posso lieti di fornire chiarimenti.

Qualcuno può punto nella giusta direzione me?


chiarire alcuni dettagli per Tim

  • D: Quanti account può un individuo affari hanno?
  • A: Ogni azienda individuo avrebbe un account. Come ad esempio "macina Springfield Maths"

  • D: C'è una correlazione uno-a-uno tra sottodomini e account?

  • A: Sì, come ad esempio springfield-maths-grinds.myapp.com

  • D: Esiste una corrispondono "utente" ad una persona fisica, o un ruolo all'interno di un account

  • A: Mi avrebbe dovuto spiegare meglio. Io in realtà sono due modelli separati, ad esempio tutor e studenti. Ogni account dovrebbe avere più tutor e studenti.

le imprese, i conti, i sottodomini le imprese e gli account sono effettivamente la stessa cosa. Un 'account business' per così dire. Sto usando sottodomini per accedere a ogni 'account business'

login, gli utenti, indirizzi e-mail Devo chiarire che ho due tipi di utenti che sono rappresentati da modelli separati, questi sono tutor e studenti. Questi dovranno accedere al app e voglio utilizzare un indirizzo di posta elettronica come il loro accesso, al posto di un nome utente.

Si spera che cancella le cose, piuttosto che fare peggio.

Il mio problema attuale è la seguente, Se qualcuno dovesse impostare un account incassi per "Springfield frantumazioni di fisica" e uno degli studenti di "Springfield matematica macina" hanno cercato di iscriversi, allora sarebbero in grado di farlo perché l'indirizzo e-mail è già in uso e ha bisogno di essere unico. Voglio sapere come ambito gli studenti e tutor all'interno di un account business.

È stato utile?

Soluzione

Ci sono due cose che dovete pensare. L'integrità dei dati e l'autenticazione.

Rails permette di portata unicità di una o più colonne. Con scoping si potrebbe avere più indirizzi di posta elettronica foo@bar.local nel database con il vincolo di un solo per account. Ho incluso quello che lo SQL corrispondente potrebbe apparire questo per dimostrare come funziona.

# Without scoping
validates :email, :uniqueness => true
SELECT 1 FROM `users` WHERE `users`.email = 'foo@bar.local'

# With scoping
validates :email, :uniqueness => true, :scope => :account_id
SELECT 1 FROM `users` WHERE `users`.account_id = 1 AND `users`.email = 'foo@bar.local'

sto supponendo che si sta utilizzando Rails 3. È possibile passare la stessa possibilità di validates_uniqueness_of se si sta utilizzando Rails 2.

Per l'autenticazione, si vorrà trovare l'account, assicurarsi che l'utente appartiene a quel conto e controllare che le loro partite di password. Quando si presenta il modulo di accesso per l'utente, si sa già che rappresentano la loro autenticazione contro. La vostra azione potrebbe essere simile.

def create
  @account = Account.find_by_subdomain(params[:subdomain])
  @user    = @account.users.find_by_email(params[:user][:email])
  if @user.authenticate(params[:user][:password])
    redirect_to dashboard_path
  else
    render :new
  end
end

Altri suggerimenti

Credo che hai bisogno di essere un po 'più chiaro su ciò che si sta facendo e esattamente quello che stai chiedendo. Quello che è importante cominciare con è spiegare le vostre esigenze e il vostro modello di dati, piuttosto che quali pacchetti si sta utilizzando. Nella tua domanda, abbiamo:

  • attività
  • account
  • sottodomini
  • login
  • utenti
  • indirizzi e-mail

Sto indovinando che alcuni di questi sono le stesse cose. Così forse si può iniziare delineando come queste cose si incastrano. Ecco alcune domande:

  • Quanti account può avere una singola azienda?
  • Esiste una correlazione uno-a-uno tra sottodomini e account?
  • Esiste una corrispondono "utente" ad una persona fisica, o un ruolo all'interno di un account?

Una volta entrato in chiaro in mente come queste cose si incastrano, e si può chiarire questo punto, la tua domanda sarà sostanzialmente più facile rispondere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top