Используйте CanCan для ограничения определенных параметров - PullRequest
1 голос
/ 15 февраля 2012

Можно ли использовать CanCan для ограничения того, к каким параметризованным представлениям может обращаться пользователь?

Мы производим изображения, к которым пользователи покупают индивидуальный доступ.

Например:

Боб имеет доступ к изображениям 1, 3 и 4. Джо имеет доступ к изображениям 2 и 4. Стив имеет доступ к изображениям 5.

url будет что-то вроде site.com/images/1.

Есть ли способ, которым я могу ограничить, какой номер (параметр) представления может просматривать пользователь?С CanCan или без?

Я использую Rails 3.2.1

Спасибо

1 Ответ

1 голос
/ 15 февраля 2012

Вот пример из одного из моих проектов.

классы

class App
  has_many :app_ownerships
end

class User
  has_many :app_ownerships
end

class AppOwnership
  belongs_to :user
  belongs_to :app


end

где-то в способности. РБ

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

Надеюсь, вы сможете использовать этот фрагмент для своих нужд.

...