Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 组合有很多:通过多态关联_Ruby On Rails - Fatal编程技术网

Ruby on rails 组合有很多:通过多态关联

Ruby on rails 组合有很多:通过多态关联,ruby-on-rails,Ruby On Rails,在Rails(5.2)应用程序中,我有用户,组织,订阅,以及事件 用户s属于组织,并且用户s和组织都可以订阅事件 现在我需要一个用户通过其个人订阅和属于其组织的订阅获取相关事件 我正在尝试创建subscribable多态关联 订阅表包含以下字段: 身份证 事件id 可下标标识 下标型 但是现在我被卡住了,不知道如何设置用户、组织和订阅之间的关联 class User < ApplicationRecord end class Organization < Applicatio

在Rails(5.2)应用程序中,我有
用户
组织
订阅
,以及
事件

用户
s属于
组织
,并且
用户
s和
组织
都可以订阅
事件

现在我需要一个
用户
通过其个人订阅和属于其组织的订阅获取相关事件

我正在尝试创建
subscribable
多态关联

订阅
表包含以下字段:

  • 身份证
  • 事件id
  • 可下标标识
  • 下标型
但是现在我被卡住了,不知道如何设置
用户
组织
订阅
之间的关联

class User < ApplicationRecord
end

class Organization < ApplicationRecord
end

class Subscription < ApplicationRecord
  belongs_to :subscribable, polymorphic: true
  belongs_to :subscriber,   polymorphic: true
end
class用户
用户
应该同时是
subscribable
subscriber
,但我不能让它工作


我应该如何设置
用户
模型中的关联?

下面的代码应该做什么

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
如果要调用用户组织的订阅和事件,则

用户应该同时是subscribable和subscriber,但我 不能让它工作

不确定您的意思,但如果想要获得订阅的订阅者,请在
订阅
模型中添加关联,如下所示

class Subscription < ApplicationRecord
  belongs_to :subscribable, polymorphic: true
  belongs_to :event
  has_many :subscribers, source: :user
end
类订阅

现在,
@subscription.subscribers
将提供订阅该订阅的用户列表。

我认为你进展顺利,只需删除
属于:subscriber,多态:true
和添加
在用户和组织中都有许多关系。订阅也将有
属于\u:event
有\u多个:订阅
有\u多个:事件,:通过=>:订阅
感谢您的回复。
@user.organization.events
@user.organization.subscriptions
class Subscription < ApplicationRecord
  belongs_to :subscribable, polymorphic: true
  belongs_to :event
  has_many :subscribers, source: :user
end