J'essaye de mettre en place une application de Rails 3 pour manipuler des rôles d'utilisateur avec Devise et CanCan.Les cases à cocher obtiennent mais ne mettent pas plusieurs-à-plusieurs rôles
Mes relations sont les suivantes
class User < ActiveRecord::Base
has_many :users_roles
has_many :roles, :through => :users_roles
end
class Role < ActiveRecord::Base
has_many :users_roles
has_many :users, :through => :users_roles
end
class UsersRole < ActiveRecord::Base
belongs_to :user
belongs_to :role
end
En fait, tout fonctionne bien. Devise gère parfaitement l'authentification. CanCan restreint le comportement de l'utilisateur en fonction de la capacité.rb.
Mais j'ai un problème ridicule avec la définition d'un UsersRole.
J'ai défini des cases à cocher sur la page d'édition de l'utilisateur comme ça. Si je crée un UserRole via la console, ces cases à cocher sont vérifiées en fonction du rôle de l'utilisateur.
Mais je ne peux pas définir ou modifier les rôles en utilisant ces cases à cocher!
J'ai été partout dans les maisons avec ceci - variations de syntaxe, commuté à une approche de HABTM et de roles_mask, reconstruit mes modèles et contrôleurs plusieurs fois - tout à l'effet nul.
En fait, le titre de ma question n'est pas tout à fait correct - les cases mettent
_method put
authenticity_token XGl6s1iyXJfahdgftc3df8q1ZeehMVzs3LxiQH98jGw=
commit Update
user[current_password] password
user[email] [email protected]
user[name] User Name
user[password]
user[password_confirmatio...
user[role_ids][] 1
user[role_ids][] 4
user[role_ids][]
utf8 ✓
Mais ces valeurs ne sont pas définies dans la base de données.
Qu'est-ce que je fais de mal ?? !!!
Vous êtes tout à fait raison! C'est toujours les petites choses que tu négliges. J'ai spécifié role_ids comme attr_accesible et tout fonctionne. Maintenant, essayant d'implémenter votre contrôleur. L'appelleriez-vous en tant que before_save? –
Génial. Fait quelques suggestions de la façon de le manipuler dans le contrôleur – DanneManne
J'ai le même code exact mais l'affichage n'est pas rendu et ai reçu un message: méthode non définie 'first 'pour faux: FalseClass. s'il vous plaît laissez-moi savoir ce qui pourrait être le problème – amj