ruby-on-rails - 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
包含一系列项目?
任何见解将不胜感激。
解决方案
但令我困惑的是确保每个列表对于每个事件和用户都是唯一的。
如果我没记错的话,你正在寻找validates_uniqueness_of
选项scope
。
在你的item_list.rb
,添加
validates_uniqueness_of :event_id, scope: :user_id
这将确保您拥有一个item_list
独特的event_id
和user_id
. 换句话说,每个对于每个和item_list
都是唯一的。event
user
当我为 item_list 生成数据库迁移时,是否需要包含一列数组,即保存 item_ids
不,你的关联是如何设置的,Rails 会期望你item_list_id
在items
表中。所以如果你想获取items
一个item_list
,你会做@item_list.items
推荐阅读
- angular - 角度推送通知不会在 Chrome 中显示允许/拒绝通知弹出窗口
- powerbi - 如何使用日期过滤器计算 powerbi 中的 7 天移动平均线?
- python - 如何在 python 中使用 Meanshift 聚类进行预测?
- php - Windows Apache PHP 访问 Azure 托管磁盘共享
- sas - 两组SAS产品
- ansible - Ansible:有条件地打破重试循环
- java - 如何在 Java 中暂停和恢复计时器
- python - pandas to_sql() 错误 - 对于准备好的语句,超出了每个会话 20 MB 的内存限制
- javascript - 如何将浏览器滚动位置从垂直更改为水平
- prometheus-alertmanager - 在 Prometheus 中拉而不是推动警报升级