2016-09-19 4 views
0

Я использую Devise для аутентификации & CanCanCan/Rolify для авторизации.Rails - CanCanCan, Rolify, Define - Определяющие способности для связанной модели

Я хочу ограничить запись каждой модели пользователю, который создал его, через различные ассоциации.

I.e./sales/1 должен быть доступен только пользователю, принадлежащему к организации, имеющей продажу.

User 
    has_many :organisations 

Organisation 
    belongs_to :user 
    has_many :sales 

Sale 
    belongs_to :organisation 
    has_many :payments 

Payment 
    belongs_to :sale 

Ограничение Организации Пользователя, который принадлежит ему прямо вперед:

class Ability 
    include CanCan::Ability 

    def initialize(user) 
     user ||= User.new # guest user (not logged in) 
     if user.has_role? :admin 
     can :manage, :all 
     elsif user.has_role? :standard 
     can [:create, :read, :update, :destroy], Organisation, :user_id => user.id 
     end 
    end 
end 

Как я могу достичь того же для соответствующей продажи, а затем соответствующий взнос?

can [:manage], Sale, ? 

can [:manage], Payment, ? 

Примечание: Rails 5.0.0.1, Ruby 2.3.1

ответ

0

Вы можете добавить ассоциацию в payment.rb

belongs_to :sale 
has_one :organisation, through: :sale 

, а затем вы можете добавить в ability.rb

+0

Работает отлично - спасибо –

Смежные вопросы