Can you have a model with attributes of another model?

Ok so basically I have a problem. Im relatively new to rails and i seem to have come to a dead end. I wanted a model that could either be a URL, a video, a picture or a sound recording. Obviously this is impossible. I am gonna use attachment_fu if that helps. So whats the most DRY way of doing this. Each media thing, whether it be a video, a picture, a URL or a sound file must be classified under the same thing as, lets say a media object. Consequently they share attributes, like an id, a upload date, a description etc. However they differ in their actual media format.

Does anyone know how I should make my models and controllers. Thanks!

Zack,

Tuesday, July 13, 2010, 3:25:03 PM, you wrote:

Ok so basically I have a problem. Im relatively new to rails and i seem to have come to a dead end. I wanted a model that could either be a URL, a video, a picture or a sound recording. Obviously this is impossible. I am gonna use attachment_fu if that helps. So whats the most DRY way of doing this. Each media thing, whether it be a video, a picture, a URL or a sound file must be classified under the same thing as, lets say a media object. Consequently they share attributes, like an id, a upload date, a description etc. However they differ in their actual media format.

Does anyone know how I should make my models and controllers. Thanks! -- Posted via http://www.ruby-forum.com/.

Two possibilities come to mind: Subclassing and Mixins.

You can create

You probably want to use polymorphic associations.

Greg Donald wrote:

Does anyone know how I should make my models and controllers. Thanks!

You probably want to use polymorphic associations.

Active Record Associations — Ruby on Rails Guides

-- Greg Donald destiney.com | gregdonald.com

hey thanks for the reply. Your right, I thought about it more and polymorphism is exactly what I need. However, I want a media object to be either a picture, a video, a sound file or a link. So that means links, pictures, videos and sound files have the attributes of a media object but are their own media. If that makes any sense? So for example id like to be able to do: MediaObject.find_by_video(example_media_object.content) or something like that. I dont really know how to explain this in rails, but I can do this easily in java haha.

Thanks.

Ok thanks!