设计不可吸引的轨道管理冲突



Rails Admin在我安装Devise_Invitable之前工作正常。 现在,当我在Rails Admin中单击用户时,我收到以下错误:

NoMethodError in RailsAdmin::MainsController#list
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.map

其他模型工作正常。

我有一种预感,这可能是麻烦的一部分:

https://github.com/sferik/rails_admin/issues/370

因为这是devise_invitable的一部分

 belongs_to :invited_by, :polymorphic => true

它说问题已解决,但是有什么办法我没有最新的rails管理员吗?

宝石文件

gem 'rails_admin', :git => 'git://github.com/sferik/rails_admin.git'

感谢您的任何想法。

让您向

用户模型添加has_many :invitees, :class_name => self.class.name, :as => :invited_by的答案可以使rails_admin正常工作,但我在删除和编辑时遇到了问题。 解决方案是将添加到用户模型的行更改为:

has_many :invitees, :class_name => "User", :as => :invited_by

不幸的是,您获得的堆栈跟踪(以及 GitHub 问题中的堆栈跟踪)在rails_admin中非常常见——它的真正含义是无法自动发现关联。如您所发现的,该修复不适用于与devise_invitable的交互。

发生NoMethodError是因为 devise_invitable gem(截至 0.5.0)仅声明invited_by关系的belongs_to一半。 rails_admin无法完全理解这种部分声明的关系和barfs。

通过向 Devise 模型添加以下内容,我们能够在我们的应用程序中解决此问题:

class User < ActiveRecord::Base
  # Create an explicit User.invitees => [User, User, …] relationship
  # so that rails_admin can correctly discover this relationship.
  has_many :invitees, :class_name => self.name, :as => :invited_by       
  …
end

如果您根本不打算跟踪邀请者/被邀请者的关系,则可以分叉devise_invitable gem 并删除该功能。

相关内容

  • 没有找到相关文章

最新更新