Skip to content

Instantly share code, notes, and snippets.

@Cosmo
Last active August 29, 2015 14:04
Show Gist options
  • Save Cosmo/62afcf94042889d1c700 to your computer and use it in GitHub Desktop.
Save Cosmo/62afcf94042889d1c700 to your computer and use it in GitHub Desktop.
# UPDATED - IT WORKS
# Thanks to "kuadrosx"!
# #mongoid on chat.freenode.net
class Conversation
include Mongoid::Document
field :name
embeds_many :messages, as: :messagable, :class_name => 'ConversationMessage'
end
class ConversationMessage
include Mongoid::Document
belongs_to :user
embedded_in :messagable
end
class ConversationTextMessage < ConversationMessage
field :body
end
class ConversationInviteTextMessage < ConversationMessage
belongs_to :guest, class_name: "User"
end
c = Conversation.first
c.messages << ConversationTextMessage.new(user: User.first, body: "Yo.")
c.messages << ConversationInviteTextMessage.new(user: User.first, guest: User.last)
c.save
c.messages.each do |message|
puts message.class
end
# => ConversationTextMessage
# => ConversationInviteTextMessage
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment