diff options
Diffstat (limited to 'app/policies/application_policy.rb')
| -rw-r--r-- | app/policies/application_policy.rb | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/app/policies/application_policy.rb b/app/policies/application_policy.rb index 68007b133..7b4d1b0c0 100644 --- a/app/policies/application_policy.rb +++ b/app/policies/application_policy.rb @@ -76,9 +76,18 @@ class ApplicationPolicy # Custom Permissions # ------------------ + def archived? + return @is_archived if instance_variable_defined?(:@is_archived) + @is_archived = is_archived + end + + def finalised? + return @is_finalised if instance_variable_defined?(:@is_finalised) + @is_finalised = is_finalised + end + def archived_or_finalised? - return @is_archived_or_finalised if instance_variable_defined?(:@is_archived_or_finalised) - @is_archived_or_finalised = is_archived_or_finalised + archived? || finalised? end @@ -117,12 +126,21 @@ class ApplicationPolicy end private - def is_archived_or_finalised + def is_archived + !!case referential + when Referential + referential.archived_at + else + current_referential.try(:archived_at) + end + end + + def is_finalised !!case referential when Referential - referential.archived_at || referential.in_referential_suite? + referential.in_referential_suite? else - current_referential.try(:archived_at) || current_referential.try(:in_referential_suite?) + current_referential.try(:in_referential_suite?) end end end |
