docs: add documentation for various classes in app/logical.

This commit is contained in:
evazion
2021-06-23 05:09:55 -05:00
parent e5cfb7904c
commit ed302fdf4d
33 changed files with 518 additions and 25 deletions

View File

@@ -1,3 +1,15 @@
# A global variable containing the current user, the current IP address, the
# current user's country code, and whether safe mode is enabled.
#
# The current user is set during a request by {ApplicationController#set_current_user},
# which calls {SessionLoader#load}. The current user will not be set outside of
# the request cycle, for example, during background jobs, cron jobs, or on the
# console. For this reason, code outside of controllers and views, such as
# models, shouldn't rely on or assume the current user exists.
#
# @see https://api.rubyonrails.org/classes/ActiveSupport/CurrentAttributes.html
# @see ApplicationController#set_current_user
# @see SessionLoader#load
class CurrentUser < ActiveSupport::CurrentAttributes
attribute :user, :ip_addr, :country, :safe_mode
@@ -5,6 +17,10 @@ class CurrentUser < ActiveSupport::CurrentAttributes
delegate :id, to: :user, allow_nil: true
delegate_missing_to :user
# Run a block of code as another user.
# @param user [User] the user to run as
# @param ip_addr [String] the IP address to run as
# @yield the block
def self.scoped(user, ip_addr = "127.0.0.1", &block)
set(user: user, ip_addr: ip_addr) do
yield user