Вы можете создать регистрацию модели соединения и сделать полиморфную принадлежность own_to, чтобы он мог ссылаться на любой тип объекта.Вот пример:
models / team.rb:
class Team < ActiveRecord::Base
has_many :registrations, :as => :owner
end
models / user.rb
class User < ActiveRecord::Base
has_many :registrations, :as => :owner
end
models / registration.rb
class Registration < ActiveRecord::Base
belongs_to :owner, :polymorphic => true
end
models / event.rb
class Event < ActiveRecord::Base
has_many :registrations
end
db / migrations / 1234_add_registrations.rb
...
t.belongs_to :owner, :polymorphic => true
t.belongs_to :event
...
Теперь вы можете посмотреть регистрацию, чтобы увидеть, кто подписался на ваше мероприятие,Вы можете использовать has_many: events,: through =>: registrations,: source =>: owner, чтобы вернуться к пользователям, но учтите, что существуют некоторые ограничения, такие как has_many: owners,: through =>: регистрации, которые рассматриваются вплагины типа has_many_polymorphs .