Sha256: c4d4b6e92f61325eb7f9b62f3719ba71f27d3aa8fb68c8095168ec756985dfeb
Contents?: true
Size: 1.29 KB
Versions: 31
Compression:
Stored size: 1.29 KB
Contents
module WithTermsAcceptance def has_forum_terms_to_accept? !has_accepted_all?(forum_terms) end def has_profile_terms_to_accept? !has_accepted_all?(profile_terms) end def has_role_terms_to_accept? !has_accepted_all?(role_specific_terms) end def role_specific_terms @role_specific_terms ||= Term.role_specific_terms_for(self) end def forum_terms @forum_terms ||= Term.forum_related_terms end def profile_terms @profile_terms ||= Term.profile_terms_for(self) end def accept_profile_terms! accept_terms! profile_terms end def accept_forum_terms! accept_terms! forum_terms end def has_accepted?(term) term_accepted_at_for(term.scope).try { |it| it > term.updated_at }.present? end private def unaccepted_terms_in(terms) terms.reject { |term| has_accepted? term} end def unaccepted_terms_scopes_in(terms) unaccepted_terms_in(terms).map(&:scope) end def has_accepted_all?(terms) unaccepted_terms_in(terms).blank? end def term_accepted_at_for(role) send term_acceptance_field_for(role) end def term_acceptance_field_for(role) "#{role}_terms_accepted_at" end def accept_terms!(terms) update! unaccepted_terms_scopes_in(terms).to_h { |scope| [term_acceptance_field_for(scope), Time.now] } end end
Version data entries
31 entries across 31 versions & 1 rubygems