Module: GraphStarter::Authorizable

Extended by:
ActiveSupport::Concern
Included in:
Asset, Category, Model, Property
Defined in:
app/models/concerns/graph_starter/authorizable.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#set_access_levels(model, access_levels) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'app/models/concerns/graph_starter/authorizable.rb', line 13

def set_access_levels(model, access_levels)
  records_by_id = model.where(id: access_levels.keys).index_by(&:id)

  model.where_not(id: records_by_id.keys)
    .query_as(:r)
    .match_nodes(this: self)
    .match('r-[rel:CAN_ACCESS]->(this)')
    .delete(:rel).exec

  access_levels.each do |id, level|
    CanAccess.create(from_node: records_by_id[id], to_node: self, level: level)
  end
end