internal mail system

Darren Evans wrote:

I don't really want to start re-inventing the wheel if there is an easy
solution.

A blog, right? Just install Mephisto or one of the others. Blogs with
message boards are where it's at. Even simpler, a Wiki. The Recent
Changes is the daily inbox.

Darren Evans wrote:

Hi Phlip

Thanks very much for your reply, I really appreciate it. Mephisto looks
really interesting, but it's not exactly what I am looking for this
time.

I would like a system where one user sends a message to another user,
rather than one user sends a message to all users. Something like an
internal email system within the application is the best way that I can
describe it, but using user ids rather than e-mail addresses

Maybe I could adapt Mephisto by adding some conditions, or is there
something more appropriate?

Thanks

Darren

Phlip wrote:
  

Darren Evans wrote:

I don't really want to start re-inventing the wheel if there is an easy
solution.
      

A blog, right? Just install Mephisto or one of the others. Blogs with
message boards are where it's at. Even simpler, a Wiki. The Recent
Changes is the daily inbox.

--
  Phlip
  http://c2.com/cgi/wiki?ZeekLand <-- NOT a blog!!
    

Yup, I've implemented one. Really easy to roll your own, particularly if you're using REST. My model is really simple, with just a few validations and utility methods:

class Message < ActiveRecord::Base
  validates_presence_of :title, :body, :recipient_id, :sender_id
  belongs_to :sender, :class_name => "User", :foreign_key => "sender_id"
  belongs_to :recipient, :class_name => "User", :foreign_key => "recipient_id"
  attr_accessible :title, :body, :recipient_id
   # aliases read_at accessor attribute to make it read more nicely
  def read?
    read_at
  end
   # returns the opposite_party in the messsage to given user. So if the given user is the recipient,
  # this method returns the sender and vice versa. If the given user is neither a recipient nor sender
  # (e.g. because they're an editor) it returns the recipient. If the given user is nil (e.g. because
  # the current_user is nil) an exception is raised
  def partner_to(user)
    raise ArgumentError unless user
    user.id == recipient_id ? sender : recipient
  end
end

In User model (which is based on acts_as_authenticated), I've got the following associations:

  has_many :sent_messages, :class_name => "Message", :foreign_key => "sender_id", :order => 'created_at DESC'
  has_many :received_messages, :class_name => "Message", :foreign_key => "recipient_id", :conditions => ['deleted_at IS NULL'], :order => 'created_at DESC'
  has_many :unread_messages, :class_name => "Message", :foreign_key => "recipient_id", :conditions => ['read_at IS NULL AND deleted_at IS NULL'], :order => 'created_at DESC'

The schema for the Message class is:
  create_table "messages", :force => true do |t|
    t.column "title", :string
    t.column "body", :text
    t.column "recipient_id", :integer
    t.column "sender_id", :integer
    t.column "created_at", :datetime
    t.column "deleted_at", :datetime
    t.column "read_at", :datetime
end

Hopefully should be enough to get you started.

I found this
http://matt-beedle.com/2007/06/05/acts_as_emailable/

But can someone tell me whether this is ok to use? or has someone used
it?

also…how do i take mephisto's emailing feature???
pls let me know.