使用CanCan限制特定参数

时间:2012-02-15 01:46:15

标签: ruby-on-rails permissions cancan

Can Can可以用来限制用户可以访问的参数化视图吗?

我们制作用户购买个人访问权限的图片。

例如:

Bob可以访问图像1,3和4。 Joe可以访问图像2和4。 史蒂夫可以访问图片5。

网址类似于site.com/images/1

有没有办法可以限制用户可以查看的视图的数量(参数)?有没有CanCan?

我正在使用Rails 3.2.1

由于

1 个答案:

答案 0 :(得分:1)

以下是我的一个项目的例子。

class App
  has_many :app_ownerships
end

class User
  has_many :app_ownerships
end

class AppOwnership
  belongs_to :user
  belongs_to :app


end

在ability.rb

的某个地方
can :read, App do |app|
  # find all ownerships with at least read-only access (access_level == 1)
  active = app.app_ownerships.select do |o|
    o.app_id == app.id && o.user_id == user.id && o.access_level >= 1
  end
  active.length > 0
end

app_controller.rb

中的某个地方
def show
  @app = App.find params[:id]
  authorize! :show, @app # throws exception if not authorized

  ...
end

希望您可以根据自己的需要使用此代码段。