【问题标题】:Authorization on an association with CanCan,Devise and Rolify授权与 CanCan、Devise 和 Rolify 建立关联
【发布时间】:2012-08-09 19:59:31
【问题描述】:

我的应用程序中有当前的数据库结构:

Publisher has_many videos, has_many users
Video      belongs_to publisher
User       belongs_to publisher

我希望能够根据发布者向用户授予权限,但实际被编辑的对象是视频对象。

表示用户 X 可以编辑发布者 1 和 2 的视频,但用户 Y 只能编辑发布者 2 和 3 的视频,依此类推。我很确定这可以通过 CanCan、Devise、Rolify 组合来完成。

任何人都可以在这里指出正确的方向吗?

【问题讨论】:

  • User X 连接到发布者 1 和 2 的逻辑是什么?
  • 更新了关系:)! @Max

标签: ruby-on-rails ruby-on-rails-3 devise authorization cancan


【解决方案1】:

抱歉延迟回复。希望您现在已经解决了您的问题,但我会为您提供解决方案。

在你的 CanCan 能力中,你有这样的东西:

def initialize(current_user) 
  current_user ||= User.new

  can :update, Video do |video|
    current_user.publisher_list.contains? video.publisher
  end
end

如果 user.publisher_list 返回用户可以修改的发布者列表,则上述代码将起作用。我相信你也可以这样做:

def initialize(current_user)
  current_user ||= User.new

  can :update, Video, publisher: {id: current_user.publisher_list}
end

【讨论】:

  • 我已经以不同的方式解决了这个问题,但这个也可以!非常感谢。
猜你喜欢
  • 2012-06-08
  • 2017-06-04
  • 2021-09-13
  • 1970-01-01
  • 2013-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多