在active_admin中删除用户时出错

时间:2014-03-09 06:26:45

标签: ruby-on-rails activeadmin rails-activerecord

尝试删除用户时出现以下错误:

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方法似乎不存在。非常感谢任何帮助。

感谢。

2 个答案:

答案 0 :(得分:1)

我无法解释这个具体的错误,但看起来有一些关于rolify的宏方法的混淆。以下是一些背景知识:

rolify在用户和角色模型之间建立has_and_belongs_to_many。因此,用户模型中的has_one调用是不必要的,可能会导致问题。

resourcify用于表示用户可以拥有与该类的给定类或实例相关的一个或多个角色。用户没有角色方面的角色,他们在帖子或文章或其他任何方面都有角色。因此,您的角色模型中的resourcify调用很可能会导致问题。您需要在课程中为您尝试限制访问的模型调用resourcify

答案 1 :(得分:0)

我已经对此进行了调查,因为我正在尝试rolifyresourcifyUserRole以外的模型。我没有明确的答案,但我可以提供我发现的内容。如果没有别的,请确保您拥有最新版本的rolify(“捆绑更新rolify”)。

我已经回答了类似的问题。

https://stackoverflow.com/a/23003808/1011746

不幸的是,我一直无法弄清楚代码中是如何覆盖:roles关联的。它可能是:roles以外的其他东西被覆盖但我没有找到它。

这不是一个答案,但我希望它指向正确的方向。