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



755
756
757
758
# File 'lib/sequel/plugins/privacy.rb', line 755

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

#create(values = {}) ⇒ Object



772
773
774
# File 'lib/sequel/plugins/privacy.rb', line 772

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

#for_vc(vc) ⇒ Object



729
730
731
# File 'lib/sequel/plugins/privacy.rb', line 729

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

#new(values = {}) ⇒ Object



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

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



736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
# File 'lib/sequel/plugins/privacy.rb', line 736

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