Sha256: 1c260db0c8828c951c0096b5953ad0ab82ff3905394525a53073124fe5462a7f

Contents?: true

Size: 1.1 KB

Versions: 17

Compression:

Stored size: 1.1 KB

Contents

# frozen_string_literal: true

module Spotlight
  ##
  # Exhibit feedback contacts
  class ContactEmail < ActiveRecord::Base
    extend Devise::Models
    devise :confirmable
    belongs_to :exhibit
    validate :valid_email
    validates :exhibit, presence: true

    scope :confirmed, -> { where.not(confirmed_at: nil) }

    def to_s
      email
    end

    def recently_sent?
      confirmation_sent_at > 3.days.ago if confirmation_sent_at?
    end

    protected

    def valid_email
      begin
        parsed = Mail::Address.new(email)
      rescue Mail::Field::ParseError => e
        Rails.logger.debug { "Failed to parse email #{email}: #{e}" }
      end

      errors.add :email, 'is not valid' if parsed.nil? || parsed.address != email || parsed.local == email
    end

    def send_devise_notification(notification, *args)
      notice = notification_mailer.send(notification, self, *args, exhibit: exhibit)
      if notice.respond_to? :deliver_now
        notice.deliver_now
      else
        notice.deliver
      end
    end

    def notification_mailer
      Spotlight::ConfirmationMailer
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
blacklight-spotlight-4.2.0 app/models/spotlight/contact_email.rb
blacklight-spotlight-4.1.2 app/models/spotlight/contact_email.rb
blacklight-spotlight-4.1.1 app/models/spotlight/contact_email.rb
blacklight-spotlight-4.1.0 app/models/spotlight/contact_email.rb
blacklight-spotlight-4.0.3 app/models/spotlight/contact_email.rb
blacklight-spotlight-4.0.2 app/models/spotlight/contact_email.rb
blacklight-spotlight-4.0.1 app/models/spotlight/contact_email.rb
blacklight-spotlight-4.0.0 app/models/spotlight/contact_email.rb
blacklight-spotlight-3.6.0.beta10 app/models/spotlight/contact_email.rb
blacklight-spotlight-3.6.0.beta9 app/models/spotlight/contact_email.rb
blacklight-spotlight-3.6.0.beta8 app/models/spotlight/contact_email.rb
blacklight-spotlight-3.6.0.beta7 app/models/spotlight/contact_email.rb
blacklight-spotlight-3.6.0.beta6 app/models/spotlight/contact_email.rb
blacklight-spotlight-3.6.0.beta5 app/models/spotlight/contact_email.rb
blacklight-spotlight-3.6.0.beta4 app/models/spotlight/contact_email.rb
blacklight-spotlight-3.6.0.beta3 app/models/spotlight/contact_email.rb
blacklight-spotlight-3.6.0.beta1 app/models/spotlight/contact_email.rb