Hello, I am currently working on an app where I have at least 7 roles. I want to control all the permissions available for each role. Right now I have a users table, roles table and a joined table user_roles. I have 3 ideas in mind and will like to hear your opinion on both of them (and suggestions for better solutions).
The first one is having a models table that contains the following columns: id model_name 1 User 2 Event 3 Post and a joined table model_roles: id role_id model_id Permission 1 1 1 15 2 3 3 2 The permission column will be a 4-bit number, each bit representing a CRUD operation, for example: CRUD 0010 = 2 Meaning that the user with role_id 3 can only make updates on the Post model. The only problem I have found with this approach is that there might be other actions apart from the CRUD ones. The other idea is an aro - aco based one (like the way CakePHP handles ACL's) having a table with all the possible actions and another one establishing a relationship between role and the action i.e. aco's table id aco 1 users 2 users/index permissions table role_id aco_id 1 1 1 2 ... etc the problem with this approach is that it will be a pain to keep these tables updated along with the permissions. The other idea is to have an actions table that will contain the name of a controller and a action id controller_name action_name 1 events new and finally a roles_actions table id role_id action_id 1 1 2 The idea will be to query if the current_user can do an action on a specific controller. The problem with this approach is that there will be constant querying on the roles and roles_actions table every time a user tries to access any action on the app. Anyone has ideas on how to diminish this? Maybe uploading permissions and rights for roles on a class on memory, uploading the permissions for a specific controller on a session (security problems?). Any ideas or suggestions for of these, or better solutions? Kind regards, Elioncho --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---

