Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8629341
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 12, 20262026-06-12T08:46:48+00:00 2026-06-12T08:46:48+00:00

I am making a private message system and I’m using state machine for to

  • 0

I am making a private message system and I’m using state machine for to know where is a message.

This is my model:

class Message
  include Mongoid::Document
  include Mongoid::Timestamps::Created

  #fields
  field :subject, :type => String
  field :body, :type => String
  field :place, :type => String
  field :has_been_read, :type => String

  # Relationships 
  belongs_to :sender, :class_name => 'User', :inverse_of => :messages_sent
  belongs_to :receiver,   :class_name => 'User', :inverse_of => :messages_received

  #state machine has been read message?
    state_machine :has_been_read, :initial => :unread do
    event :read_message do
    transition :from => :unread, :to => :read
   end
   event :mark_unread do
     transition :from => :read, :to => :unread
   end
  end
  #state machine status can be in_box, sent, draft, trash, spam
end

user model:

class User
 include Mongoid::Document
 include Mongoid::Timestamps::Created
.
.
.
  has_many :messages_sent, :class_name => 'Message', :inverse_of => :sender
  has_many :messages_received, :class_name => 'Message', :inverse_of => :receiver
.
.
.
end

1º How can a message is at the same time on sent or inbox place?

2º What initial state have a message for sender and receiver user?

Sorry but I’m newbie with state_machine gem

Thank you very much

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-12T08:46:49+00:00Added an answer on June 12, 2026 at 8:46 am

    It looks like you’re trying to track two things here (read status and delivery state) and you’re currently combining them together. I think it actually makes sense and would be much cleaner to keep these separate.

    I would recommend the following:

    1. In your state-machine, keep track of the message state: draft, outbox, sent, inbox, trash, etc.

    2. Separately keep a read_at field in your model that stores the datetime that the message was viewed by the recipient and default this value to nil.

      field :read_at, type: DateTime, default: nil

    3. Add a boolean method to your document for checking read status:

      def read?
      !@read_at.nil?
      end

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I am making a system private message. I want catch all object with checkbox
I am making a GUI of Stack using Java. Here is my code private
Im making a small private message application in the form of a phone. Ten
Using Mercurial. Working in private clones, making changes, pushing to master. Etc. That's fine.
Currently writing a class where methods that I am considering making private are spread
Is there a best practice for making private methods in classes static? I have
Making a word document of our network set-up. We have about 7 servers and
Making my first steps in RIA Services (VS2010Beta2) and i encountered this problem: created
Hey guys I'm making a chat program and I have a parent MessagePacket class
I'm currently working on creating a private messaging system, (PHP/MySQL) in which users can

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.