class GreetingCardEmail include Mongoid::Document include Mongoid::Timestamps field :category_id field :year, type: Integer field :sending_time, type: DateTime field :is_sent, :type => Boolean, :default => false belongs_to :member_profile belongs_to :email, dependent: :destroy belongs_to :greeting_card_record, dependent: :destroy, index: true index({category_id: 1, year: -1, sending_time: -1, member_profile_id: 1}, { unique: false, background: true }) def email_sent(mails, flag) if flag # Generate next record when email is sent new_sending_time = self.sending_time + 1.year new_email_record = self.dup new_record = self.greeting_card_record.dup new_email_record.year += 1 new_email_record.sending_time = new_sending_time new_record.sending_time = new_sending_time new_email = self.email.dup new_email.mail_sentdate = new_sending_time new_email.template_data["model_id"] = new_email_record.id new_email.save new_record.email_id = new_email.id new_email_record.email_id = new_email.id new_email_record.greeting_card_record = new_record new_record.save new_email_record.save self.update(is_sent: true) end end end