您可以通过以下方式使用can?从视图或控制器获得current_user的权限:

  <% if can? :update, @article %>
    <%= link_to "Edit", edit_article_path(@article) %>
  <% end %>

如何使用以下语法从模型访问此功能:

user.can?(:update, @article)

推荐答案

github上有一个wiki条目,上面写着:https://github.com/ryanb/cancan/wiki/ability-for-other-users

您需要如下更改您的用户模型:

class User < ActiveRecord::Base
  def ability
    @ability ||= Ability.new(self)
  end
  delegate :can?, :cannot?, :to => :ability
end

然后你可以判断如下能力:

user.can?(:update,@article)

Ruby-on-rails相关问答推荐

Rails 7.1.3如何在生产环境中查看堆栈跟踪

使用ImportMaps将HighLightJS添加到rails 7.1

从Rails中的字符串中间提取子字符串

删除 aws s3 (rails7) 上的日志(log)文件

Rails 7 应用程序 - 引用模型文件时出现未初始化常量错误

组合 active_record 模型并按共享属性排序

Rails 'includes' 和 'where' 与 belongs_to 和 has_many 关联

在 Ruby on Rails html.erb 文件中循环

rails select标签,预先 Select 了多个值

用 url_for 查询参数?

Rails: WickedPDF: 分页符

在两个 DateTime 之间迭代,步长为一小时

Rails data-disable-with re-enable 按钮

使用 jQuery 在 Rails 中不显眼的动态表单字段

Sidekiq 在 docker-compose 上的 127.0.0.1:6379 (Errno::ECONNREFUSED) 上连接到 Redis 时出错

submit_tag rails 表单中的 bootstrap 图标

如何设置 MiniTest?

Ruby/Rails CSV 解析,UTF-8 中的无效字节序列

在 Rails 3 中突出显示当前页面的最佳方法? -- 有条件地将css类应用于链接

在 El Capitan 上安装 Nokogiri (1.6.7) 时出错