2012-02-26 11 views
5

Me han instalado Diseñar y creado usuarios y también Administradores de uso de la opción 1 de este tutorial https://github.com/plataformatec/devise/wiki/How-To:-Add-an-Admin-roleidentificadores únicos entre los usuarios y administradores con rieles Idear

ahora necesito un poco de ayuda. Cuando se agregan los administradores, se crea una tabla diferente y surge la posibilidad de que los administradores y los usuarios habituales puedan tener las mismas ID.

Entonces, ¿cómo puedo obtener información de usuarios y administradores? Digamos, por ejemplo, quiero mostrar todos los usuarios? ¿Tengo que atravesar la tabla de usuarios y luego la tabla de administradores?

O si estoy mostrando una publicación. ¿Cómo sabré qué tabla buscar para obtener la información de usuario o de administrador?

Sé que puedo simplemente agregar una columna de función a la tabla de usuarios, pero quería evitar esto.

espero que esto tenga sentido jaja

Respuesta

12

Le recomiendo usar la herencia de tabla única (ITS). Usted podría hacer la ITS mediante la adición de una columna denominada type con un tipo de datos en la tabla stringusers y crear un modelo admin, así como un modelo normal_user ambos modelos heredarán a partir del modelo de la userdevise joya.

class NormalUser < User 
end 

class Admin < User 
end 

La columna de tipo es una palabra reservada que llevará a cabo un valor ya sea NormalUser o Admin según el tipo de usuario que ha creado.

Para crear un administrador utilizar Admin.create(...) y crear un uso normal del usuario NormalUser.create(...) donde los puntos son los atributos de la Admin y la NormalUser

+0

@ mohammed.magdy impresionante Creo que esto es lo que estaba buscando. ¿Podrían ayudarme a configurar el código de autenticación adecuado? Estoy intentando usar Rails_Admin, así que necesito una forma de autenticar administradores. – Dan

+2

Claro, en la tabla de usuarios, agregó una columna llamada tipo que es un tipo de datos de cadena. El valor de la columna de tipo será Admin o NormalUser (en nuestro caso aquí). Cuando un usuario inicia sesión, puede obtener el tipo de usuario agregando un método en user.rb que verifique el tipo de usuario registrado. Para el administrador defina un método llamado admin? el cuerpo será self.is_a? (Admin) esto devolverá true si el usuario que ha iniciado sesión es admin else devolverá falso. Lo mismo para el usuario normal, en el archivo user.rb, agregue un método llamado def normal_user? el cuerpo del método será self.is_a? (NormalUser). – mohamagdy

+0

Para la autenticación, recomiendo usar la gema cancan pero el dispositivo funcionará para usted tanto en autorización como en autenticación si los roles no son demasiado. – mohamagdy

Cuestiones relacionadas