Module: Protector::Adapters::Sequel::Dataset
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/protector/adapters/sequel/dataset.rb
Overview
Patches Sequel::Dataset
Defined Under Namespace
Classes: Restrictor
Instance Method Summary collapse
- #creatable? ⇒ Boolean
-
#each_with_protector(*args, &block) ⇒ Object
Substitutes
row_procwith Protector and injects protection scope. -
#protector_defend_graph(relation, subject) ⇒ Object
Injects protection scope for every joined graph association.
-
#protector_meta(subject = protector_subject) ⇒ Object
Gets DSL::Meta::Box of this dataset.
Instance Method Details
#creatable? ⇒ Boolean
33 34 35 |
# File 'lib/protector/adapters/sequel/dataset.rb', line 33 def creatable? model.new.restrict!(protector_subject).creatable? end |
#each_with_protector(*args, &block) ⇒ Object
Substitutes row_proc with Protector and injects protection scope
43 44 45 46 47 48 49 50 51 |
# File 'lib/protector/adapters/sequel/dataset.rb', line 43 def each_with_protector(*args, &block) return each_without_protector(*args, &block) unless protector_subject? relation = protector_defend_graph(clone, protector_subject) relation = .eval_scope_procs(relation) if .scoped? relation.row_proc = Restrictor.new(protector_subject, relation.row_proc) relation.each_without_protector(*args, &block) end |
#protector_defend_graph(relation, subject) ⇒ Object
Injects protection scope for every joined graph association
54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/protector/adapters/sequel/dataset.rb', line 54 def protector_defend_graph(relation, subject) return relation unless @opts[:eager_graph] @opts[:eager_graph][:reflections].each do |association, reflection| model = reflection[:cache][:class] if reflection[:cache].is_a?(Hash) && reflection[:cache][:class] model = reflection[:class_name].constantize unless model = model..evaluate(subject) relation = .eval_scope_procs(relation) if .scoped? end relation end |
#protector_meta(subject = protector_subject) ⇒ Object
Gets DSL::Meta::Box of this dataset
38 39 40 |
# File 'lib/protector/adapters/sequel/dataset.rb', line 38 def (subject=protector_subject) model..evaluate(subject) end |