尝试删除用户时出现以下错误:
undefined method `handle_dependency' for #<ActiveRecord::Associations::HasAndBelongsToManyAssociation:0x007fa889b27328>)
我的用户模型是:
class User < ActiveRecord::Base
rolify
attr_accessible :user_attributes
attr_accessible :username, :email, :password, :password_confirmation, :remember_me, :role_ids
has_one :role, :dependent => :destroy
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable
validates_presence_of :username, :email, :password, :case_sensitive => true
validates_uniqueness_of :email, :case_sensitive => false
validates_uniqueness_of :username, :case_sensitive => false
before_create :assign_role
def assign_role
self.add_role :user if self.roles.first.nil?
end
after_create { |admin| admin.send_reset_password_instructions }
end
我的角色模型是:
class Role < ActiveRecord::Base
has_many :users, :through => :users_roles, :dependent => :destroy
belongs_to :resource, :polymorphic => true
attr_accessible :role_attributes
resourcify
scopify
end
我做错了吗? handle_dependency
方法似乎不存在。非常感谢任何帮助。
感谢。
答案 0 :(得分:1)
我无法解释这个具体的错误,但看起来有一些关于rolify的宏方法的混淆。以下是一些背景知识:
rolify
在用户和角色模型之间建立has_and_belongs_to_many
。因此,用户模型中的has_one
调用是不必要的,可能会导致问题。
resourcify
用于表示用户可以拥有与该类的给定类或实例相关的一个或多个角色。用户没有角色方面的角色,他们在帖子或文章或其他任何方面都有角色。因此,您的角色模型中的resourcify
调用很可能会导致问题。您需要在课程中为您尝试限制访问的模型调用resourcify
。
答案 1 :(得分:0)
我已经对此进行了调查,因为我正在尝试rolify
和resourcify
除User
或Role
以外的模型。我没有明确的答案,但我可以提供我发现的内容。如果没有别的,请确保您拥有最新版本的rolify(“捆绑更新rolify”)。
我已经回答了类似的问题。
https://stackoverflow.com/a/23003808/1011746
不幸的是,我一直无法弄清楚代码中是如何覆盖:roles
关联的。它可能是:roles
以外的其他东西被覆盖但我没有找到它。
这不是一个答案,但我希望它指向正确的方向。