/ user处的ArgumentError。 - Rails 4 Rails_admin Pundit

时间:2016-05-24 03:22:00

标签: ruby-on-rails devise rails-admin pundit

我正在尝试使用rails_admin_pundit添加基于角色的访问权限 到rails_admin。

当我点击rails_admin中的users表时,我收到此错误。

ArgumentError at /user. User(id: integer, email: string, ... 'shortened' ...role: integer) is not an ActiveRecord::Relation

我创建了一个应用程序:
https://github.com/RailsApps/rails-devise-pundit

并按照以下使用说明进行操作:
https://github.com/sudosu/rails_admin_pundit

这是我的user_policy.rb只是为了开始......

def rails_admin?(action)
  case action
    when :destroy, :new
      false
    else
      @current_user.admin!
  end
end

附上了几个带有错误的应用程序,以及我在按下用户模型名称链接之前看到的内容的屏幕截图。

app with the error..

error file and screenshot

another app with the same error

不需要:dropbox链接... link to screenshot, error page, and two apps that I have this problem in...

  • 我可以让专家在rails_admin之外工作
  • 我以管理员身份登录
  • 我在Google上搜索了此错误或类似问题。

有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:1)

当我们生成代码时,我们有:

class Scope < Scope
    def resolve
      scope
    end
  end

所以,我们需要定义范围

class Scope < Scope
  def resolve      
    if @user.role.description == 'admin' 
      User.all
    else
      User.where(id: @user.id)
    end
  end
end