Мне нужно использовать CanCanCan, чтобы ограничить возможность для всех пользователей только просматривать свои собственные данные или разрешить просматривать ограниченные данные от других.
Я пробовал следующее, но неработа:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
affiliate ||= Affiliate.new # guest user (not logged in)
# guest ||= U
#Admin
if user.admin?
can :manage, :all
elsif user.seller?
can :manage, Listing, user_id: user.id
can :read, Listing
can :manage, Order, buyer_id: user.id
can :manage, Order, seller_id: user.id
can :manage, StripeAccount, user_id: user.id
can :manage, BankAccount, user_id: user.id
can :manage, User, user_id: user.id
elsif affiliate
can :manage, User, affiliate_id: affiliate.id
can :read, Order
can :manage, StripeAccount, affiliate_id: affiliate.id
can :manage, Affiliate, affiliate_id: affiliate.id
#Buyer
elsif user.buyer?
can :read, Listing
can [:create, :read, :edit, :purchases, :update], Order, buyer_id: user.id
#Guest
else
can :read, Listing
can [:create, :order_confirmation], Order
# can :create, User
end
end
end
Когда я вошел в качестве партнера, он не позволяет мне просматривать StripeAccount, связанный с affiliate.id, и он есть в модели.
У меня есть две модели, Пользователь и Партнер.
Пользователь имеет роли enum, 1,2,3.(admin 3). Партнер имеет роли enum, 1,2
Мне нужно установить ограничение для каждой модели устройства и каждой роли в каждой модели устройства.