Rails关联-将项目列表与特定事件的特定用户相关联

时间:2018-09-24 14:34:09

标签: ruby-on-rails associations

我在一个活动网站上工作,用户在其活动清单中有可以在其个人资料中列出的项目。为此,我正在使用:

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

在event.rb

has_many :item_lists

但是让我感到困惑的是确保每个列表对于每个事件和用户都是唯一的。另外,我对item_list的迁移是否包括一系列项目?

任何见识都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

  

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

如果我没记错,您正在寻找带有scope选项的validates_uniqueness_of

在您的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_id表中有items。因此,如果您想为items提取item_list,则可以进行@item_list.items