Ruby on rails Rails如何实现角色和定义角色';谁的力量?

Ruby on rails Rails如何实现角色和定义角色';谁的力量?,ruby-on-rails,database-design,Ruby On Rails,Database Design,现在,在我的rails应用程序中,我使用简单的身份验证(电子邮件、密码)和赋予帐户角色来定义帐户可以做什么 def login email = params[:email] @account = Account.find_by_email(email) if @account && @account.authenticate(params[:password]) session[:user_id] = @account.id r

现在,在我的rails应用程序中,我使用简单的身份验证(电子邮件、密码)和赋予帐户
角色
来定义帐户可以做什么

  def login
    email = params[:email]
    @account = Account.find_by_email(email)
    if @account && @account.authenticate(params[:password])
      session[:user_id] = @account.id
      redirect_to books_path
    else
      render :login
    end
  end

def current_user
    @current_user ||= Account.find(session[:user_id]) if session[:user_id]
end
例如:两个角色管理器(角色id:1)和用户(角色id:2…N) 在controller中,我使用愚蠢的方式为每个角色设置数据,如:

每本书都有账号

def index
    @books = Book.where("account_id = ?,@current_user.id)
    @books = Book.all if @current_user.role_id == 1
end

这似乎太愚蠢了,我试图用cancancan来解决这个问题,但正如我所知,cancancan只是可以定义Restful方法,并且可以区分角色权限,就像管理者可以做所有事情和方法可以做展示一样。。。cancancan是否可以采取某种方法解决什么角色可以看到他们拥有什么数据的问题?使用cancancan或其他方式解决?请给我一些建议!谢谢。

您可以使用cancancan助手
:can?
来完成此任务

比如说

定义每个角色的能力

can :read, Book
现在可以检查具有特定角色的用户是否可以阅读图书条目

或者您(在其他页面上)通过以下方式进行检查:


.....

您还可以定义自己的能力。有关详细帮助,请参阅

我的回答可以帮助您吗?
<% if can? :create, Book %>
  .....
<% end %>