Module: Sequel::Plugins::Privacy::DatasetMethods

Extended by:
T::Generic, T::Helpers, T::Sig
Defined in:
lib/sequel/plugins/privacy.rb

Instance Method Summary collapse

Instance Method Details

#allObject



763
764
765
766
# File 'lib/sequel/plugins/privacy.rb', line 763

def all
  results = super
  opts[:viewer_context] ? results.compact : results
end

#create(values = {}) ⇒ Object



780
781
782
# File 'lib/sequel/plugins/privacy.rb', line 780

def create(values = {})
  T.cast(new(values), Sequel::Model).save
end

#for_vc(vc) ⇒ Object



737
738
739
# File 'lib/sequel/plugins/privacy.rb', line 737

def for_vc(vc)
  clone(viewer_context: vc)
end

#new(values = {}) ⇒ Object



770
771
772
773
774
775
776
# File 'lib/sequel/plugins/privacy.rb', line 770

def new(values = {})
  instance = T.unsafe(model).new(values)
  if (vc = opts[:viewer_context])
    instance.instance_variable_set(:@viewer_context, vc)
  end
  instance
end

#row_procObject



744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
# File 'lib/sequel/plugins/privacy.rb', line 744

def row_proc
  vc = opts[:viewer_context]
  return super unless vc

  model_class = T.cast(model, ClassMethods)
  vc_key = model_class.privacy_vc_key
  proc do |values|
    old_vc = Thread.current[vc_key]
    Thread.current[vc_key] = vc
    begin
      model_class.(values)
    ensure
      Thread.current[vc_key] = old_vc
    end
  end
end