单表继承Active Admin模型映射问题Rails 4

12

我在这里创建了一个具有单表继承的多用户,以下是我的模型:

# user.rb 

class User < ActiveRecord::Base
end

这是用户模型,所有其他模型都从用户继承,数据库中有一个模型可以存储两种类型的用户,并保存它们的类型。

# customer.rb

class Customer < User
end

# space_owner.rb

class SpaceOwner < User
end

当我在Rails 4中将这些映射到active_admin时,它会显示一个错误。

Showing /home/rabnawaz/.rvm/gems/ruby-2.3.1/bundler/gems/activeadmin-0a5a15b88bff/app/views/active_admin/resource/index.html.arb where line #2 raised:

undefined method `chain' for nil:NilClass
Extracted source (around line #709):
  def chain
    @chain ||= begin
      a = source_reflection.chain
      b = through_reflection.chain
      chain = a + b
      chain[0] = self # Use self so we don't lose the information from :source_type

当我创建active_admin文件以显示用户时,我遇到了以下错误:

请问您能给我一个解决方案吗?

这是我使用的devise路由,用于创建多个用户:

devise_for :admin_users, ActiveAdmin::Devise.config
  ActiveAdmin.routes(self)

devise_for :customers, :controllers => { 
    :registrations=>"customers/registrations", 
    :passwords=>"customers/passwords"
  },:skip => :sessions
  devise_for :space_owners, :controllers => { 
    :registrations=>"space_owners/registrations", 
    :passwords=>"space_owners/passwords"
  },:skip => :sessions

错误信息显示 nil 类没有 chain 方法,这可能意味着在调用其上的 chain 时,source_reflection 或 through_reflection 其中之一未被定义。 - Misha Slyusarev
我刚刚使用了这个,问题解决了。 config.filters = false - Rabnawaz
3
关闭过滤器并不是解决方法。这里报告了这个错误:https://github.com/activeadmin/activeadmin/issues/3957 - kebomix
1个回答

1

引用来自https://github.com/activeadmin/activeadmin/issues/3957的答案:

经过一些研究,我发现当active_record无法自动推断嵌套关联的名称时,会出现此错误。处理此问题的解决方法可以是在嵌套关联上使用through

从您的问题中也不清楚您是否已将用户子类注册到ActiveAdmin中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接