Ruby on rails 什么样的连接/模型安排适合这里?
我一直在阅读ActiveRecord下可能存在的各种类型的关系,我认为我理解抽象中的所有细节,但它们并没有真正为我点击。我真的很想在这个问题上提出一些建议 在我的实习申请中,我要处理四件具体的事情:观众、电视节目、这些节目的光盘和剧集。然后有一个抽象的东西,观众或“订阅”/“谁看什么”的关系,这就是我遇到麻烦的地方 总结Ruby on rails 什么样的连接/模型安排适合这里?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我一直在阅读ActiveRecord下可能存在的各种类型的关系,我认为我理解抽象中的所有细节,但它们并没有真正为我点击。我真的很想在这个问题上提出一些建议 在我的实习申请中,我要处理四件具体的事情:观众、电视节目、这些节目的光盘和剧集。然后有一个抽象的东西,观众或“订阅”/“谁看什么”的关系,这就是我遇到麻烦的地方 总结 每个所有者观看多个节目s 每个节目都有许多插曲s 一个插曲属于一个节目 一个所有者拥有许多光盘s 一张光盘属于一个节目,但上面有许多插曲 同一张光盘可以被许多所有者所拥有,但
- 每个
观看多个所有者
s节目
- 每个
都有许多节目
s插曲
- 一个
属于一个插曲
节目
- 一个
拥有许多所有者
s李>光盘
- 一张
光盘属于一个节目,但上面有许多
插曲
- 同一张
可以被许多光盘
所有者所拥有,但需要有一种方法来确定
所有者是否拥有一张特定的
——他们只是观看光盘
光盘所属的事实是不够的,必须在某个地方有一个布尔值“拥有”节目
- 用户X观看什么节目
- 谁看电视节目
- 用户X拥有多少张光盘
- 光碟Z上有哪些剧集
- 哪些剧集还没有出现在光盘上
- 用户X不拥有他们观看的任何节目光盘吗
订阅
和属于:所有者
属于:显示
- 联接表,
,有两列:subscriptions
,t.references:owner
t.references:show
所有者
和拥有多张:光盘
拥有多张:放映,通过::订阅
Show
和有许多:光盘
有许多:所有者,通过::订阅
Show
有很多:剧集
剧集
和属于:show
属于:disc
光盘
并且有许多:集
属于许多:所有者
has\u和\u属于\u many
是否合适。今天我已经模拟了好几次了,但是试图确定查询和不熟悉的语法,以及试图掌握或正确创建关系,这两者的结合导致了一些挫折和困惑。我非常感谢有人指出我犯的一些错误,让我知道“Railsy”的方法,或者解释正确的关系结构应该是什么。以下是我要做的:
所有者:
has_many: subscriptions
has_many: disks, through: :subscriptions
展示:
插曲:
belongs_to :show
belongs_to :disk
磁盘:
订阅:
belongs_to: owner
belongs_to: disk
这应该行得通。唯一不存在的是业主-展会关系。我认为这是最好的,因为现实生活中没有联系。唯一真正的连接是通过磁盘(如果您没有任何节目的磁盘,那么您就不会观看该节目)。您可以通过以下方式获得所有者观看的所有节目(反之亦然):
最后两行未经测试,但我相信它们应该可以正常工作。属于\u-to \u许多不存在
belongs_to :show
has_many :subscriptions
has_many :owners, through: :subscriptions
has_many :episodes
belongs_to: owner
belongs_to: disk
@shows = @owner.disks.map(&:show).flatten.uniq
@owners = @show.disks.map(&:owners).flatten.uniq