Мне часто бывает полезно забыть о ActiveRecord DSL и работать с моделью данных напрямую при определении сложных отношений. Если модель данных верна, вы можете отобразить ее в операторах модели.
Из вашего вопроса не совсем ясно, могут ли Изображения принадлежать Пользователю или Событию, или если они могут принадлежать обоим одновременно. Эта проблема будет определять модель данных, которую вы используете.
Если изображение может принадлежать обоим, таблица изображений будет нуждаться в ссылке как user_id , так и event_id , который может потребоваться обнулять в зависимости от вашего использования. case (пользователь или событие являются необязательными отношениями). Если изображение может принадлежать только одному, вы можете установить какое-то полиморфное ownerable отношение, которое отображает владельцев на таблицу прав владельцев ( owner_id , owner_type и т. д.)
Предполагая, что он может принадлежать обоим:
class Image < ActiveRecord::Base
belongs_to :event
belongs_to :user
end
class Event < ActiveRecord::Base
has_many :images
belongs_to :user
end
class User < ActiveRecord::Base
has_many :events
has_many :images
has_many :event_images, :through => :events, :class_name => "Image"
end