Class: Parse::Constraint::ACLWritableByConstraint
- Inherits:
-
Parse::Constraint
- Object
- Parse::Constraint
- Parse::Constraint::ACLWritableByConstraint
- Defined in:
- lib/parse/query/constraints.rb
Overview
A constraint for filtering objects based on ACL write permissions. This constraint queries the MongoDB _wperm field directly. Strings are used as exact permission values (user IDs or "role:RoleName" format).
For role-based filtering with automatic "role:" prefix, use writable_by_role instead.
# Find objects writable by a specific user object (fetches user's roles automatically) Post.where(:ACL.writable_by => user)
# Find objects writable by exact permission strings (no prefix added) Post.where(:ACL.writable_by => "user123") # User ID Post.where(:ACL.writable_by => "role:Admin") # Role with explicit prefix Post.where(:ACL.writable_by => ["user123", "role:Admin"])
Direct Known Subclasses
ACLWritableByExactConstraint, WritableByConstraint, WriteableByConstraint
Instance Attribute Summary
Attributes inherited from Parse::Constraint
#operand, #operation, #operator, #value
Instance Method Summary collapse
-
#build ⇒ Hash
The compiled constraint using _wperm field.
-
#strict? ⇒ Boolean
Whether to compile an EXACT match.
-
#writable_by ⇒ ACLWritableByConstraint
A registered method on a symbol to create the constraint.
Methods inherited from Parse::Constraint
#as_json, constraint_keyword, create, formatted_value, #formatted_value, #initialize, #key, #precedence, #regex_unicode_option, register, #to_s
Constructor Details
This class inherits a constructor from Parse::Constraint
Instance Method Details
#build ⇒ Hash
Returns the compiled constraint using _wperm field.
2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 |
# File 'lib/parse/query/constraints.rb', line 2941 def build # Use @value directly to preserve type information before # formatted_value converts to pointers. value = @value # "No permissions" intent (nil / [] / "none" / :none) — see # {ACLReadableByConstraint#build}. return ACLPermissions.empty_pipeline(field: "_wperm") if ACLPermissions.empty_intent?(value) = ACLPermissions.collect(value) ACLPermissions.pipeline(, field: "_wperm", strict: strict?) end |
#strict? ⇒ Boolean
Returns whether to compile an EXACT match. Overridden by Parse::Constraint::ACLWritableByExactConstraint.
2936 2937 2938 |
# File 'lib/parse/query/constraints.rb', line 2936 def strict? false end |
#writable_by ⇒ ACLWritableByConstraint
A registered method on a symbol to create the constraint.
2932 |
# File 'lib/parse/query/constraints.rb', line 2932 register :writable_by |