Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 与CanCan、Desive和Rolify合作的授权_Ruby On Rails_Ruby On Rails 3_Devise_Authorization_Cancan - Fatal编程技术网

Ruby on rails 与CanCan、Desive和Rolify合作的授权

Ruby on rails 与CanCan、Desive和Rolify合作的授权,ruby-on-rails,ruby-on-rails-3,devise,authorization,cancan,Ruby On Rails,Ruby On Rails 3,Devise,Authorization,Cancan,我的应用程序中有当前的数据库结构: Publisher has_many videos, has_many users Video belongs_to publisher User belongs_to publisher 我希望能够根据发布者向用户授予权限,但实际编辑的对象是视频对象 这意味着用户X可以编辑来自publisher 1和publisher 2的视频,但用户Y只能编辑来自publisher 2和publisher 3的视频,依此类推。我很确定这可以通过Ca

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

Publisher has_many videos, has_many users
Video      belongs_to publisher
User       belongs_to publisher
我希望能够根据发布者向用户授予权限,但实际编辑的对象是视频对象

这意味着用户X可以编辑来自publisher 1和publisher 2的视频,但用户Y只能编辑来自publisher 2和publisher 3的视频,依此类推。我很确定这可以通过CanCan,Desive,Rolify组合来实现


有人能给我指一下正确的方向吗?

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

在你的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\u list返回用户可以修改的发布者列表,则上述代码将起作用。我相信你也可以做到:

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

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

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

在你的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\u list返回用户可以修改的发布者列表,则上述代码将起作用。我相信你也可以做到:

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

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

将用户X连接到发布服务器1和2的逻辑是什么?更新了关系:)@MaxX将用户X连接到发布服务器1和2的逻辑是什么?更新了关系:)@MaxI已经用另一种方法解决了这个问题,但这个方法也很有效!非常感谢。我已经用不同的方法解决了这个问题,但这个方法也很有效!谢谢。