Sha256: 6f5c6954cfb0b651ec83a9332f72de68482ed732d426d914c697a07bf44a2294
Contents?: true
Size: 662 Bytes
Versions: 2
Compression:
Stored size: 662 Bytes
Contents
# frozen_string_literal: true module IAmICan module Resource extend ActiveSupport::Concern included do # Book.that_allow(User.all, to: :read) # Book.that_allow(User.last, to: :write) scope :that_allow, -> (subject, to:) do stored_ids = subject.try(:new_record?) ? [ ] : subject._roles.ids tmp_role_ids = Array(subject).flat_map(&:temporary_roles).map(&:id).uniq allowed_ids = subject.i_am_i_can.role_model.where(id: (stored_ids + tmp_role_ids).uniq) ._permissions.where(action: to, obj_type: self.name).pluck(:obj_id).uniq where(id: allowed_ids) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
i_am_i_can-4.4.1 | lib/i_am_i_can/resource.rb |
i_am_i_can-4.4.0 | lib/i_am_i_can/resource.rb |