单表继承 活动管理模型映射问题 rails 4
Posted
技术标签:
【中文标题】单表继承 活动管理模型映射问题 rails 4【英文标题】:Single Table inheritance Active admin model mapping issue rails 4 【发布时间】:2017-01-04 17:13:49 【问题描述】:我创建了一个具有单表继承的多用户这里是我的模型
# user.rb
class User < ActiveRecord::Base
end
这是用户模型,所有其他模型都是从数据库中的用户继承的,它们是一种既存储用户类型又保存用户类型的模型
# customer.rb
class Customer < User
end
# space_owner.rb
class SpaceOwner < User
end
**当我将这些映射到active_admin
rails 4 时,我会看到一个错误**
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_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 类没有链方法,这可能意味着 source_reflection 或 through_reflection 之一在您调用链时没有定义。 谢谢我刚刚用了这个,问题解决了 config.filters = false @RabnawazJansherBadozai 禁用过滤器不是解决办法。尽管github.com/activeadmin/activeadmin/issues/3957 在此处报告了该错误 【参考方案1】:引用https://github.com/activeadmin/activeadmin/issues/3957的答案:
经过一些研究,我发现当 active_record 无法自动推断嵌套的名称时会出现此错误 协会。处理此问题的解决方法可能是例如使用
through
嵌套关联。
您的问题也不清楚您是否确实向 ActiveAdmin 注册了 User 子类。
【讨论】:
以上是关于单表继承 活动管理模型映射问题 rails 4的主要内容,如果未能解决你的问题,请参考以下文章
使用单表继承时是不是可以在 Rails 3 中有动态 id 列
如何将活动记录类特定属性映射到rails中相应的通用关注方法