首页 > 解决方案 > Rails 关联 - 将项目列表与特定用户的特定事件相关联

问题描述

我正在一个活动网站上工作,用户在他们的库存中有可以在他们的个人资料中列出的物品。为此,我正在使用:

has_many :items

在我的 user.rb 中。

然后,用户将能够参加任意数量的活动。对于每个事件,他们将有一个唯一的项目列表,即要带到事件中的项目。我正在尝试找出关联以使这项工作正常进行。

在 item_list.rb 中:

belongs_to :event
belongs_to :user
has_many :items

在 item.rb 中:

belongs_to :user
belongs_to :item_list

在事件.rb

has_many :item_lists

但令我困惑的是确保每个列表对于每个事件和用户都是唯一的。此外,我的迁移是否会item_list包含一系列项目?

任何见解将不胜感激。

标签: ruby-on-railsassociations

解决方案


但令我困惑的是确保每个列表对于每个事件和用户都是唯一的。

如果我没记错的话,你正在寻找validates_uniqueness_of选项scope

在你的item_list.rb,添加

validates_uniqueness_of :event_id, scope: :user_id

这将确保您拥有一个item_list独特的event_iduser_id. 换句话说,每个对于每个和item_list都是唯一的。eventuser

当我为 item_list 生成数据库迁移时,是否需要包含一列数组,即保存 item_ids

不,你的关联是如何设置的,Rails 会期望你item_list_iditems表中。所以如果你想获取items一个item_list,你会做@item_list.items


推荐阅读