but pictures can’t belongs to event AND biography at the same time :
well, it’s certainly possible but not really ‘clean’… It means
polluting the picture model with event_id, biography_id, and some others
(article_id, page_id, …)
Well, if the same picture can belong to an Event AND a biography at the
same time, it gets kinda complicated, but if one picture can only belon
to an event OR a biography, the simple solution is a polymorphoc
association.
class Biography < ActiveRecord::Base
has_many :pictures, :as => :image
end
class event < ActiveRecord::Base
has_manny :pictures, :as => :image
end
class Picture < ActiveRecord::Base
belongs_to :image, :polymorphic => true
end
Now your Picture Model only needs 2 special fields:
image_id (Integer) = the foreign key of the object it belongs_to
image_type (string) = the Class Name of the object it belongs_to
those 2 fields are handled by ActiveRecord, you dont have to provide
the values yourself …
now you can do:
@event.pictures # get all Pictures of an event
… OR … @event = Event.pictures.build(someParaamsHere) @event.save
… ETC …
and all the other stuff you could do with a simple
has_many ↔ belongs_to relationship.