Ruby on rails 将项目分配给多个用户

Ruby on rails 将项目分配给多个用户,ruby-on-rails,login,devise,Ruby On Rails,Login,Devise,我刚刚开始学习rails,我遇到了一个小问题 想象一下,您必须选择不同类型的用户:客户端和管理员。两者都存储在同一用户模型中,并带有布尔值(admin=true/false)。这就是我如何区分这些。所以现在有了一些项目。这些只是带有多个属性的帖子,如名称、描述、类别 我想让我的管理员看到所有的项目,他应该有能力编辑这些项目,但同时我想让客户用户只看到他被分配到的项目,他不应该能够编辑这些项目 所以总结:管理->查看所有帖子,并能够编辑和分配客户给他们 客户->查看分配给他但无法编辑的项目。他应该

我刚刚开始学习rails,我遇到了一个小问题

想象一下,您必须选择不同类型的用户:客户端和管理员。两者都存储在同一用户模型中,并带有布尔值(admin=true/false)。这就是我如何区分这些。所以现在有了一些项目。这些只是带有多个属性的帖子,如名称、描述、类别

我想让我的管理员看到所有的项目,他应该有能力编辑这些项目,但同时我想让客户用户只看到他被分配到的项目,他不应该能够编辑这些项目

所以总结:管理->查看所有帖子,并能够编辑和分配客户给他们

客户->查看分配给他但无法编辑的项目。他应该只看到分配给他的人


我怎么做?

使项目属于用户。这意味着:

  • 生成迁移以添加DB列(运行此命令):

  • 将关联添加到您的
    项目
    模型(
    app/models/Project.rb
    ):

  • 将关联添加到您的
    用户
    模型(
    app/models/User.rb
    ):

在项目控制器中,您希望对以下各项执行操作:

  • 用户的项目列表
  • 所有项目的管理员列表
这些可能看起来像这样(
app/controllers/projects\u controller.rb
):


采用类似的方法定义编辑操作:使用
验证\u admin\u状态
回调检查试图访问该操作的用户是否是管理员,然后选择(或更新)项目记录。

使项目属于用户。这意味着:

  • 生成迁移以添加DB列(运行此命令):

  • 将关联添加到您的
    项目
    模型(
    app/models/Project.rb
    ):

  • 将关联添加到您的
    用户
    模型(
    app/models/User.rb
    ):

在项目控制器中,您希望对以下各项执行操作:

  • 用户的项目列表
  • 所有项目的管理员列表
这些可能看起来像这样(
app/controllers/projects\u controller.rb
):


采用类似的方法定义编辑操作:使用
验证\u admin\u status
回调检查试图访问该操作的用户是否是管理员,然后选择(或更新)项目记录。

检查视图和控制器操作

if current_user.admin 

签入视图和控制器操作

if current_user.admin 

你用谷歌搜索过这个吗?你不可能是第一个想要在他的应用程序中扮演不同角色的人……你用谷歌搜索过这个吗?你不可能是第一个想要在他的应用程序中扮演不同角色的人。。。
has_many :projects
class ProjectsController < ApplicationController
  before_action :authenticate_user!
  before_action :verify_admin_status, :only => [:admin_list]

  def user_list
    @projects = current_user.projects
  end

  def admin_list
    @projects = Project.all
  end

  private
    def verify_admin_status
      unless current_user.admin
        raise ActionController::RoutingError.new('Not Found')  # or whatever other error you want, i.e. 403
      end
    end
end
get 'projects/mine',  :to => 'projects#user_list'
get 'projects/admin', :to => 'projects#admin_list'
if current_user.admin