Dans episode 189 of Railscasts, il y a un champ nommé dans le modèle de l'utilisateur qui est comme suit:MongoId Syntaxe Question
field :roles_mask, :type => Integer
ROLES = %w[admin moderator author]
named_scope :with_role, lambda { |role| {:conditions => "roles_mask & #{2**ROLES.index(role.to_s)} > 0"} }
# roles related
def roles=(roles)
self.roles_mask = (roles & ROLES).map { |r| 2**ROLES.index(r) }.sum
end
def roles
ROLES.reject { |r| ((roles_mask || 0) & 2**ROLES.index(r)).zero? }
end
def role_symbols
roles.map(&:to_sym)
end
Comment peut-on obtenir pour travailler sur MongoId comme je l'ai essayé le nombre d'options et ne pouvait pas le faire fonctionner?
theTron, merci beaucoup pour la réponse, mais les rôles sont enregistrés en tant que colonne bitmask et non en tant que colonne de tableau. Je suppose que je peux me débarrasser du bitmask et le convertir en une colonne de tableau pour stocker les rôles mais je me demandais s'il y avait un moyen de faire une chose similaire que Ryan fait avec mongoid. – Miro
Y a-t-il une raison pour laquelle vous utilisez le masque de bits? Le tableau finit par rendre l'implémentation beaucoup plus facile à long terme et certainement beaucoup plus lisible. – theTRON
J'ai fini par utiliser des tableaux comme vous le recommandiez. Merci beaucoup. – Miro