Pregunta

Estoy usando los carriles 3 y trazo.

I puede tener 2 tipos de usuarios que estoy llamando 'admin' y 'cliente', tanto almacenada en la tabla Usuarios, diferenciados por el valor de la columna booleana 'admin'.

Un 'admin' puede ser creado 2 formas:

1) Tras la creación de una nueva cuenta - en este caso, también creamos un registro asociado 'negocio'

2) Desde una cuenta existente (por lo que uno 'negocio' 'puede tener múltiples administradores') - en el caso de que queramos asociarlo con un registro de negocio existente

Un 'cliente' puede crearse 1 manera:

1) De una forma separada de los utilizados para crear un 'admin' arriba

En los 3 casos se utilizará una forma diferente. Y tras la presentación que todos tienen diferentes requisitos:

  • Quiero enviar diferentes mensajes de correo electrónico a cada uno.
  • En el primer caso 'admin' por encima de lo que necesito para comprobar si la URL de la empresa solicitada es único, en el segundo caso no es así. Y en el caso de clientes que no.
  • En el caso de la primera 'admin' Quiero crear algunas entradas de base de datos por defecto tras la finalización de una cuenta, pero no en el segundo caso.
  • Cuando se crea una cuenta de 'cliente' Quiero realizar alguna otra acción específica para ese tipo de cuenta.

¿Debo usar el mismo controlador para los diferentes tipos de usuario, o por separado ellos? Si ellos deben ser los mismos, ¿cómo sabe qué tipo de usuario debe crear?

¿Qué pasa con los modelos?

¿Alguna idea sobre cómo diseñar esto?

Muchas gracias.

¿Fue útil?

Solución

Mi conjetura inicial sería la creación de dos subclases de User llamada Admin y Client. Un poco como esto:

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

A continuación, puede añadir diferentes formas en config/routes.rb:

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

Asegúrese de leer sobre infecciones de transmisión sexual en los carriles y leer la documentación de inventar.

Otros consejos

Se puede usar un controlador para ello con diferentes acciones y dirigir sus formas a esas acciones:

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

carriles de forma ayudantes .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top