# == Schema Information # # Table name: channel_email # # id :bigint not null, primary key # email :string not null # forward_to_email :string not null # imap_address :string default("") # imap_enable_ssl :boolean default(TRUE) # imap_enabled :boolean default(FALSE) # imap_inbox_synced_at :datetime # imap_login :string default("") # imap_password :string default("") # imap_port :integer default(0) # smtp_address :string default("") # smtp_authentication :string default("login") # smtp_domain :string default("") # smtp_enable_ssl_tls :boolean default(FALSE) # smtp_enable_starttls_auto :boolean default(TRUE) # smtp_enabled :boolean default(FALSE) # smtp_login :string default("") # smtp_openssl_verify_mode :string default("none") # smtp_password :string default("") # smtp_port :integer default(0) # created_at :datetime not null # updated_at :datetime not null # account_id :integer not null # # Indexes # # index_channel_email_on_email (email) UNIQUE # index_channel_email_on_forward_to_email (forward_to_email) UNIQUE # class Channel::Email < ApplicationRecord include Channelable include Reauthorizable AUTHORIZATION_ERROR_THRESHOLD = 10 self.table_name = 'channel_email' EDITABLE_ATTRS = [:email, :imap_enabled, :imap_login, :imap_password, :imap_address, :imap_port, :imap_enable_ssl, :imap_inbox_synced_at, :smtp_enabled, :smtp_login, :smtp_password, :smtp_address, :smtp_port, :smtp_domain, :smtp_enable_starttls_auto, :smtp_enable_ssl_tls, :smtp_openssl_verify_mode, :smtp_authentication].freeze validates :email, uniqueness: true validates :forward_to_email, uniqueness: true before_validation :ensure_forward_to_email, on: :create def name 'Email' end private def ensure_forward_to_email self.forward_to_email ||= "#{SecureRandom.hex}@#{account.inbound_email_domain}" end end