Would it be viable to use an embedded document roles field for a user table if at most there can be 5 different roles? The reason I ask this is because I believe using an array type for that field would do the same thing. The only time I’d be using the roles field is for checking if the user has the ability to access certain pages/functionality on the website. Am I missing something here? Thanks
Would it be viable to use an embedded document roles field for a user
Share
I don’t really think either approach is incorrect and I think it’s more relevant to how you want your models to look than how your data will be stored. It really just depends on what (if any) information aside from the role type that you want to persist and how you plan to check the user’s role.
If you’re looking to simply store a list of roles (admin, user, moderator, etc) then a serialized array attribute is probably fine. On the other hand, if your roles have more information stored within them (ex. granted actions or privileges for each role) it might be beneficial to build out a
UserRolemodel separately and embed that in yourUsermodel.There is actually another, pretty good option if you’re simply storing a list of roles where each user can be a member of one or more roles. You can actually us a bitmask. Using this approach your user roles would be stored as a simple integer and you’d use some of ruby’s bitwise operators to map that value to a set of roles.
http://railscasts.com/episodes/189-embedded-association?view=asciicast