Sending messages between users

Hi,

I’m trying to create an web app where users can write messages to each
other. I use the restful_authentication plugin for the users. So they
have
an user_id. How ever the messages should have a:

  • sender
  • receiver
  • content

As i saw in some screencast the association use the user_id to connect
users
to something. But in my model there would be 2 user_id column which
obviously doesn’t work. So how do I do it?

My workaround was to create a receiver and sender model which contained
a
user_id and a message_id. Then the message contained a sender_id,
receiver_id and the content. However now I’m stuck somehow. Maybe it’s
because 2:30am here and I should be in bed
. I don’t know. Is there an
easier workaround? Some tutorials, maybe?

How do I collect my mails? Have a controller named messages where I
tried
this, but it doesn’t work (I thing my association declaration are the
cause):
@inbox = current_user.message.find_by_receiver_id(:user)

The Models:

class Message < ActiveRecord::Base
belongs_to :sender
has_one :receiver

validates_presence_of :sender
validates_presence_of :receiver
validates_length_of :content, :maximum => 4096
end

class Receiver < ActiveRecord::Base
belongs_to :message
end

class Sender < ActiveRecord::Base
has_many :message
end

class User < ActiveRecord::Base (restful_authentication plugin)

Virtual attribute for the unencrypted password

attr_accessor :password

attr_accessible :login, :email, :password, :password_confirmation

end

Greetings and thanks for any kind of help

Chris

Chris,

Why don’t you use (or check how it’s done) restful easy messages?
Alternatively, LOVD (lovdbyless.com) does it all.

Cheers, Sazima

On Feb 19, 10:35 pm, Christoph J.

Hello Chris, may I try to help you?
I thing you need something like this:

class Message < ActiveRecord::Base

belongs_to :sender, :class_name => ‘User’, :foreign_key =>
‘sender_id’
belongs_to :receiver, :class_name => ‘User’, :foreign_key =>
‘receiver_id’

end

class User < ActiveRecord::Base (restful_authentication plugin)

Virtual attribute for the unencrypted password

attr_accessor :password

attr_accessible :login, :email, :password, :password_confirmation

has_many :sent_messages, :class_name => ‘Message’ , :foreign_key =>
‘sender_id’
has_many :received_messages, :class_name => ‘Message’ , :foreign_key
=> ‘receiver_id’

end

and then you can do this:
@inbox = current_user.received_messages.find_by_receiver_id(:user)

I’m dont test this, but it shold work)
Sorry for my english.