繁体   English   中英

在Rails中的3个表之间建立数据库连接

[英]setting up database connections between 3 tables in rails

我似乎找不到直截了当的答案,所以让我解释一下我想用我的例子做什么:

我正在尝试将3张桌子连接在一起,我有Users ArtistsEvents

现在我想做的是在这里制作一个巨大的蜘蛛网,计划是让用户关注艺术家和/或事件。

艺术家belongs to一个事件(一个事件可以有很多艺术家)

这就是我开始感到困惑的地方。 我该如何进行这项工作,以便使用户根据其关注的对象/对象与活动/艺术家建立联系? (这是在视图中完成的,用户可以转到事件页面,然后单击“ stay updated按钮,然后保存事件ID或演出者ID,以备后用。

我不明白的是

我需要在数据库中填写哪些列,

我需要对模型做些什么来将它们链接在一起?

我所有的模型目前都是空的。

这是一个has_many :through关联。 Rails协会指南对此主题非常详细,因此请查看它以获取详细说明。

让我们从ArtistsEvents表开始。

一个艺术家可以参加许多活动,一个活动将有许多艺术家。 为了实现这种关系,请使用名为EventArtists的第三张表,该表跟踪哪些事件需要哪些艺术家,以及哪些艺术家在哪些事件中播放。

一个事件(EventID 1)可以有多位艺术家,而多个事件可以有一位重复艺术家(ArtistID 1)。

例:

EventsArtists 
-----------------
ArtistID EventID
1        1
2        1
1        2

您的EventArtists至少具有上表中列出的两列,即ArtistIDEventID

然后,您的模型将如下所示。

class Artist < ApplicationRecord
has_many :event_artists
has_many :events, through: :event_artists

class Event < ApplicationRecord
has_many :event_artists
has_many :artists, through: :event_artists

class EventArtist < ApplicationRecord
belongs_to :artist
belongs_to :event

要将Users表添加到组合中,必须创建UserArtistsUserEvents

:表的名称,如UserArtists可以代替被命名Follows -这一切都取决于你的想法是明确的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM