Estoy creando una aplicación de administración de inventario con cuatro tipos de usuarios diferentes: administrador, empleado, fabricante, transportista. Todavía no he empezado todavía la codificación, pero esto es lo que estoy pensando .. Fabricantes y transportadores están relacionados con has_many: a través de muchos-a-muchos relación con los productos de la siguiente manera:Múltiples funciones de usuario en Ruby on Rails
class Manufacturer < ActiveRecord::Base
has_many :products
has_many :transporters, :through => :products
end
class Product < ActiveRecord::Base
belongs_to :manufacturer
belongs_to :transporter
end
class Transporter < ActiveRecord::Base
has_many :products
has_many :manufacturers, :through => :products
end
Todos los cuatro tipos de usuarios se haya ser capaz de iniciar sesión, pero tendrán diferentes permisos y vistas, etc. No creo que pueda ponerlos en la misma tabla (Usuarios), sin embargo, porque tendrán diferentes requisitos, es decir: los proveedores y fabricantes deben tener una dirección de facturación e información de contacto (a través de validaciones), pero los administradores y los empleados no deberían tener estos campos.
Si es posible, me gustaría tener una sola pantalla de inicio de sesión en lugar de 4 pantallas diferentes.
No estoy pidiendo el código exacto para construir esto, pero estoy teniendo problemas para determinar la mejor manera de hacerlo realidad. Cualquier idea sería muy apreciada, ¡gracias!
¡Gracias por la ayuda! ¿Cómo se configurarían las tablas de la base de datos para esto, con una clase base de usuario y STI para tipos de usuarios específicos? Soy realmente nuevo en los rieles :) – aguynamedloren
Solo tendrá una tabla de 'usuarios' en el db. La herencia de tabla única/STI utiliza un campo 'tipo' en una tabla base (en este caso 'usuarios') para distinguir entre subtipos de la clase base. Necesita agregar este campo en una migración. Entonces todos los atributos para todos los subtipos de la clase base se mantendrán en la tabla de usuarios, aunque muchos de ellos no serán utilizados por instancias/filas específicas. Este es el equilibrio utilizando el patrón STI: puede tener una cantidad de campos nulos para los atributos no utilizados, dependiendo de cuántos atributos específicos de subtipo haya. –