Rolify には、すべての関係を追跡する user_roles という結合テーブルがあります。
user_id role_id
しかし、ここで奇妙なことがあります。このすべてのデータのテーブルを空にしても、各ユーザーにはまだその役割が記憶されています。
私の仕様でデータベースを操作しようとしていますが、この不気味さのために不可能です。
コンソールからこれを見てください:
user = User.save
irb(main):022:0> user.roles # nothing weird, I have a before filter to make every new user a guest
=> #<ActiveRecord::Associations::CollectionProxy [#<Role id: 1, name: "guest", resource_id: nil, resource_type: nil, created_at: "2014-08-17 10:04:57", updated_at: "2014-08-17 10:04:57">]>
irb(main):023:0> UsersRole.all.each do |role| puts role.inspect end
=> [#<UsersRole user_id: 2, role_id: 1, id: 4>, #<UsersRole user_id: 2, role_id: 1, id: 5>]
irb(main):024:0> UsersRole.all.each do |role| role.delete end
=> [] # completely empty!
irb(main):026:0> user.roles # no way should this get anything
=> #<ActiveRecord::Associations::CollectionProxy [#<Role id: 1, name: "guest", resource_id: nil, resource_type: nil, created_at: "2014-08-17 10:04:57", updated_at: "2014-08-17 10:04:57">]>
なぜこれが起こっているのかについての助けをいただければ幸いです。