Код ниже должен сделать
class Subscription < ApplicationRecord
belongs_to :subscribable, polymorphic: true
belongs_to :event
end
class User < ApplicationRecord
has_many :subscriptions, as: :subscribable
has_many :events, through: :subscriptions
belongs_to :organization
end
class Organization < ApplicationRecord
has_many :subscriptions, as: :subscribable
has_many :events, through: :subscriptions
has_many :users
end
Теперь, если вы хотите позвонить подписки и события пользователя , тогда
@user.events
@user.subscriptions
Если вы хотите позвонить подписок и событий организации пользователя , затем
@user.organization.events
@user.organization.subscriptions
Пользователь должен быть одновременно подписан и подписчиком, ноЯ не могу заставить его работать.
Не знаю, что вы имели в виду, но если хотите получить подписчиков, добавьте ассоциацию в модель Subscription
, например,
class Subscription < ApplicationRecord
belongs_to :subscribable, polymorphic: true
belongs_to :event
has_many :subscribers, source: :user
end
Теперь @subscription.subscribers
выдаст список пользователей, подписавшихся на эту подписку.