Paul Olivers wrote in post #1046790:> Hi All,
> I''d like to integrate a simple user-oriented messaging system into
my
> app.
> I have a Message model, with :from_user_id, and :to_user_id (for the
> user that sent and the user that recieved the message).
>
> Obivously, (User) has_many :messages will fetch the messages that a
> certain user has created, but not the ones that they have been sent.
>
> Currently, I have this:
> has_many :messages, :foreign_key=>:to_user_id
> has_many :sent_messages, :class_name=>''Message'',
> :foreign_key=>:from_user_id
>
> So I have to get all the messages with 2 separate calls(and sets of
> queries). This doesn''t seem quite right to me, and was wondering
if
> there is a better way.
>
> Is it possible to retrieve all messages for a user (recieved AND sent)
> in 1 relationship?
There''s potentially a few different ways to accomplish this. I would
probable just create a simple one-to-many associations and add a
message_type column to the messages table.
User
-----
has_many :messages
Message
-----
belong_to :user
Then just add a couple of scopes to the model: received & sent.
my_user.messages.received
my_user.messages.sent
my_user.messages
class Message < ActiveRecord::Base
scope :received, where(:message_type => ''received'')
scope :sent, where(:message_type => ''sent'')
end
http://api.rubyonrails.org/classes/ActiveRecord/Scoping/Named/ClassMethods.html#method-i-scope
--
Posted via http://www.ruby-forum.com/.
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.