Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 Rails 4-更新用户角色权限_Ruby On Rails 4_Pundit - Fatal编程技术网

Ruby on rails 4 Rails 4-更新用户角色权限

Ruby on rails 4 Rails 4-更新用户角色权限,ruby-on-rails-4,pundit,Ruby On Rails 4,Pundit,我正在使用Pundit gem实现具有用户、角色和权限的rails 4应用程序。我有3个模型用户,角色,角色用户,因为我有很多用户和角色之间的关系。我想编辑用户角色 class User has_and_belongs_to_many :roles end class role has_and_belongs_to_many :users end 第三个表是存储用户id和角色id的角色用户 所以,假设我想要编辑一个用户角色,我应该遵循什么方法。我是否应该从第三个表中删除现有记录,即角

我正在使用Pundit gem实现具有用户、角色和权限的rails 4应用程序。我有3个模型用户,角色,角色用户,因为我有很多用户和角色之间的关系。我想编辑用户角色

class User
  has_and_belongs_to_many :roles
end

class role
  has_and_belongs_to_many :users
end
第三个表是存储用户id和角色id的角色用户


所以,假设我想要编辑一个用户角色,我应该遵循什么方法。我是否应该从第三个表中删除现有记录,即角色\用户,然后创建显示角色的新记录。请提出建议。

不确定您是否仍在处理此问题,或者您正试图实现什么目标,但使用pundit处理用户角色的一个好方法是使用Desive处理用户配置文件并创建管理员帐户。管理员可以将特定用户的角色更改为您可以选择的任何角色(即用户、vip、主持人、编辑、管理员等)。天空是你希望你的应用程序与多个角色的复杂程度的极限。在用户模型中使用“枚举”将有助于指导您的角色选项:

class User < ActiveRecord::Base

  enum role: [:user, :vip, :admin]
  after_initialize :set_default_role, :if => :new_record?

  def set_default_role
    self.role ||= :user
  end

  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

end
class用户:新建记录?
def set_默认_角色
self.role | |=:用户
结束
设计:数据库可验证,可注册,
:可恢复,:可记忆,:可跟踪,:可验证
结束
通过这种方式,您可以将新用户的默认角色设置为普通用户,然后管理员可以将该用户更新为新用户应该担任的任何角色。如果您想要一个包含多个公司/集团的更复杂的应用程序,那么这应该能够应用到多终端应用程序中。然后,权威政策和范围将发挥作用,以确定谁有权在您的应用程序中执行某些操作。例如:

  • 管理员可以查看用户列表
  • 管理员可以更改用户的角色
  • 管理员和编辑可以创建、编辑、删除、更新博客文章
  • 普通用户看不到用户列表
  • 普通用户无法更改其角色
  • 普通用户无法查看(或编辑)其他用户的个人资料
  • 普通用户可以查看(和编辑)自己的用户配置文件
  • 普通用户不能编辑、删除或更新博客文章
  • 普通用户可以看到已发布的博客帖子
一个很好的入门资源是在示例应用程序中进行后续操作,该应用程序将引导您通过用户角色很好地进行设置。如果您的视觉效果更好,可以观看以下YouTube视频:。如果您还希望在创建用户角色时使用rspec进行测试,那么本视频非常棒


希望这能引导您朝着正确的方向努力完成任务。

不确定您是否仍在努力完成此任务,或者您确实在努力完成什么任务,但使用pundit处理用户角色的一个好方法是使用Desive处理用户配置文件并创建管理员帐户。管理员可以将特定用户的角色更改为您可以选择的任何角色(即用户、vip、主持人、编辑、管理员等)。天空是你希望你的应用程序与多个角色的复杂程度的极限。在用户模型中使用“枚举”将有助于指导您的角色选项:

class User < ActiveRecord::Base

  enum role: [:user, :vip, :admin]
  after_initialize :set_default_role, :if => :new_record?

  def set_default_role
    self.role ||= :user
  end

  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

end
class用户:新建记录?
def set_默认_角色
self.role | |=:用户
结束
设计:数据库可验证,可注册,
:可恢复,:可记忆,:可跟踪,:可验证
结束
通过这种方式,您可以将新用户的默认角色设置为普通用户,然后管理员可以将该用户更新为新用户应该担任的任何角色。如果您想要一个包含多个公司/集团的更复杂的应用程序,那么这应该能够应用到多终端应用程序中。然后,权威政策和范围将发挥作用,以确定谁有权在您的应用程序中执行某些操作。例如:

  • 管理员可以查看用户列表
  • 管理员可以更改用户的角色
  • 管理员和编辑可以创建、编辑、删除、更新博客文章
  • 普通用户看不到用户列表
  • 普通用户无法更改其角色
  • 普通用户无法查看(或编辑)其他用户的个人资料
  • 普通用户可以查看(和编辑)自己的用户配置文件
  • 普通用户不能编辑、删除或更新博客文章
  • 普通用户可以看到已发布的博客帖子
一个很好的入门资源是在示例应用程序中进行后续操作,该应用程序将引导您通过用户角色很好地进行设置。如果您的视觉效果更好,可以观看以下YouTube视频:。如果您还希望在创建用户角色时使用rspec进行测试,那么本视频非常棒

希望这能引导你朝着你想要完成的事情的正确方向前进