gpt4 book ai didi

ruby-on-rails - 在 rails 中的 3 个表之间设置数据库连接

转载 作者:行者123 更新时间:2023-11-29 12:53:02 25 4
gpt4 key购买 nike

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

我正在尝试将 3 个表连接在一起,我有 Users ArtistsEvents

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

艺术家属于一个事件(一个事件可以有很多艺术家)

这是我开始感到困惑的地方。我如何着手进行这项工作,以便用户根据他们关注的人/内容连接到事件/艺术家? (这是在 View 中完成的,用户转到事件页面并可以单击 stay updated 按钮,然后保存 eventid 或 artist id 以备后用。

我不明白的是,

我需要在数据库中创建哪些列,

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

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

最佳答案

这是一个has_many :through 关联。 Rails Associations guide关于这个主题非常详细,所以请查看它以获得深入的解释。

让我们从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 - 这完全取决于您认为清楚的内容。

关于ruby-on-rails - 在 rails 中的 3 个表之间设置数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49652776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com