0
我正在嘗試構建一個玩具應用程序,並且遇到了一個我似乎無法解決的問題。我如何強制一對值在表中是唯一的?Rails複合鍵在這對值上執行唯一性
假設以下模式:
create_table "courses", force: :cascade do |t|
t.string "title"
t.text "description"
t.string "number"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "status", default: 0
end
create_table "professors", force: :cascade do |t|
t.string "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "status", default: 0
end
create_table "sections", force: :cascade do |t|
t.integer "number"
t.integer "max_enrollment"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "professor_id"
t.integer "course_id"
t.string "room"
t.index ["course_id"], name: "index_sections_on_course_id"
t.index ["professor_id"], name: "index_sections_on_professor_id"
end
,我想創造的部分表與course_id
配對的professor_id
必須是唯一的唯一性約束。我在挖掘中唯一發現的是,您可以在模型中使用validates
關鍵字來強制實現單個字段的唯一性......我還看到有一個validates_with
關鍵字,但我找不到任何編寫驗證器的方法做我正在尋找的東西。任何幫助將不勝感激。