我有像这样的项目,类别和items_category表:
table items
+----+-------+
| id | title |
+----+-------+
table categories
+----+------+------+
| id | name | main |
+----+------+------+
table items_categories
+---------+-------------+
| item_id | category_id |
+---------+-------------+
我需要制定一个约束,以便一个项目只能有一个主要类别,否则,任何数量的main = false类别。
我最初的想法是设置UNIQUE(item_id, category_id)
,但这只是将一个项目限制为一个类别。
然后我考虑在items_categories表上有另一个名为main的列,它与category_id列引用的主列完全相同,如下所示:
table items_categories
+---------+-------------+------+
| item_id | category_id | main |
+---------+-------------+------+
UNIQUE(item_id, category_id, main)
但这不是100%标准化数据,如果可能的话我想避免这种情况。
答案 0 :(得分:0)
您需要的是partial index:
class AddDependentColumnToFeatures < ActiveRecord::Migration
def change
add_column :features, :dependent, :string, array: true, default: []
end
end