[英]setting up database connections between 3 tables in rails
我似乎找不到直截了当的答案,所以让我解释一下我想用我的例子做什么:
我正在尝试将3张桌子连接在一起,我有Users
Artists
和Events
现在我想做的是在这里制作一个巨大的蜘蛛网,计划是让用户关注艺术家和/或事件。
艺术家belongs to
一个事件(一个事件可以有很多艺术家)
这就是我开始感到困惑的地方。 我该如何进行这项工作,以便使用户根据其关注的对象/对象与活动/艺术家建立联系? (这是在视图中完成的,用户可以转到事件页面,然后单击“ stay updated
按钮,然后保存事件ID或演出者ID,以备后用。
我不明白的是
我需要在数据库中填写哪些列,
我需要对模型做些什么来将它们链接在一起?
我所有的模型目前都是空的。
这是一个has_many :through
关联。 Rails协会指南对此主题非常详细,因此请查看它以获取详细说明。
让我们从Artists
和Events
表开始。
一个艺术家可以参加许多活动,一个活动将有许多艺术家。 为了实现这种关系,请使用名为EventArtists
的第三张表,该表跟踪哪些事件需要哪些艺术家,以及哪些艺术家在哪些事件中播放。
一个事件(EventID 1)可以有多位艺术家,而多个事件可以有一位重复艺术家(ArtistID 1)。
例:
EventsArtists
-----------------
ArtistID EventID
1 1
2 1
1 2
您的EventArtists至少具有上表中列出的两列,即ArtistID
和EventID
。
然后,您的模型将如下所示。
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表添加到组合中,必须创建UserArtists
和UserEvents
。
注 :表的名称,如UserArtists
可以代替被命名Follows
-这一切都取决于你的想法是明确的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.