mirror of
https://github.com/varvet/pundit.git
synced 2022-11-09 12:30:11 -05:00
Scopes have private attr_readers
- Generate application scope with `private` attr readers - Update documentation to suggest that other scopes should use `private` There doesn't seem to be a use case for accessing the initialisation parameters on scopes. In general keeping the public interface of classes as small as possible can help to keep code decoupled.
This commit is contained in:
parent
2f68c154f0
commit
f7fc7cb7a9
3 changed files with 12 additions and 4 deletions
|
@ -7,6 +7,10 @@
|
||||||
- `.authorize` and `#authorize` return the instance, even for namespaced
|
- `.authorize` and `#authorize` return the instance, even for namespaced
|
||||||
policies (#626)
|
policies (#626)
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Generate application scope with `protected` attr_readers. (#616)
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
|
|
||||||
- Dropped support for Ruby end-of-life versions: 2.1 and 2.2. (#604)
|
- Dropped support for Ruby end-of-life versions: 2.1 and 2.2. (#604)
|
||||||
|
|
|
@ -220,8 +220,6 @@ define a class called a policy scope. It can look something like this:
|
||||||
``` ruby
|
``` ruby
|
||||||
class PostPolicy < ApplicationPolicy
|
class PostPolicy < ApplicationPolicy
|
||||||
class Scope
|
class Scope
|
||||||
attr_reader :user, :scope
|
|
||||||
|
|
||||||
def initialize(user, scope)
|
def initialize(user, scope)
|
||||||
@user = user
|
@user = user
|
||||||
@scope = scope
|
@scope = scope
|
||||||
|
@ -234,6 +232,10 @@ class PostPolicy < ApplicationPolicy
|
||||||
scope.where(published: true)
|
scope.where(published: true)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
attr_reader :user, :scope
|
||||||
end
|
end
|
||||||
|
|
||||||
def update?
|
def update?
|
||||||
|
|
|
@ -37,8 +37,6 @@ class ApplicationPolicy
|
||||||
end
|
end
|
||||||
|
|
||||||
class Scope
|
class Scope
|
||||||
attr_reader :user, :scope
|
|
||||||
|
|
||||||
def initialize(user, scope)
|
def initialize(user, scope)
|
||||||
@user = user
|
@user = user
|
||||||
@scope = scope
|
@scope = scope
|
||||||
|
@ -47,5 +45,9 @@ class ApplicationPolicy
|
||||||
def resolve
|
def resolve
|
||||||
scope.all
|
scope.all
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
attr_reader :user, :scope
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue