app/models/wco_email/conversation.rb
class WcoEmail::Conversation include Mongoid::Document include Mongoid::Timestamps include Mongoid::Paranoia store_in collection: 'office_email_conversations' STATUS_UNREAD = 'status_unread' STATUS_READ = 'status_read' STATUSES = [ STATUS_UNREAD, STATUS_READ ] field :status scope :unread, ->{ where( status: WcoEmail::Conversation::STATUS_UNREAD ) } def unread? status == STATUS_UNREAD end field :subject index({ subject: -1 }) field :latest_at index({ latest_at: -1 }) field :from_emails, type: :array, default: [] index({ from_emails: -1 }) field :preview, default: '' has_many :messages, class_name: '::WcoEmail::Message' has_and_belongs_to_many :tags, class_name: 'Wco::Tag', index: true has_and_belongs_to_many :leads, class_name: 'Wco::Lead', index: true belongs_to :filter, class_name: 'WcoEmail::EmailFilter', inverse_of: :conversations, optional: true def cache_key "#{self.class.name} #{id.to_s} #{updated_at}" end def to_s "#{subject} (#{messages.length})" end end Conv = WcoEmail::Conversation