ruby-on-rails-3 - 通过模型关系使用 CanCan 授权操作

标签 ruby-on-rails-3 cancan

我正在使用 CanCan 和 Devise 进行应用程序中的身份验证过程,一切都运行良好。

但是,我们有一个设置,用户可以在其中创建项目列表。

List 模型有一个 user_id 并且身份验证可以正常工作,但是项目的所有权是通过 List :has_many Item 关系处理的,而 Item 实际上没有 user_id 列。

CanCan 如何处理这个问题?

我试过了

can :manage, Item do |item|
  item.list.user_id = user.id
end

但在 URL 上输入项目 ID 后,每个用户都可以访问每个项目,无论列表所有权如何。

我在 Cancan 的 github 上的 wiki 中找不到任何似乎涵盖此内容的内容,因此希望这里有人能够提供帮助

期待评论 谢谢

最佳答案

您是否将 === 混淆了?

can :manage, Item do |item|
  item.list.user_id == user.id
end

关于ruby-on-rails-3 - 通过模型关系使用 CanCan 授权操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5618512/

相关文章:

ruby-on-rails - 轨attr_accessible rspec的检查

ruby-on-rails - 我需要将非数据库数据类创建为 Rails 3 "model",还是只是/lib 区域中的基本类?

ruby-on-rails - 为什么默认情况下我的 Rails 应用程序的 .gitignore 文件中包含 config/database.yml?

ruby-on-rails - 带有 omniauth linkedin Ruby gem 的大型个人资料图片

ruby-on-rails-3 - Rails cancan load_and_authorize_resource 不工作

ruby-on-rails - 如何使用 devise parent_controller 来设计继承的 Controller ,但跳过 ActiveAdmin 设计 Controller ?

ruby-on-rails-3 - 康康 - "can :manage, all"。我无法通过设计访问所有 rails 3 应用程序

ruby-on-rails - 使用模型关联验证用户使用 CanCan 的能力

ruby-on-rails - 从 Rails 3.1 引擎中访问主应用程序的 CanCan 规则

ruby-on-rails - 使用 CanCan 的上下文感知授权