我需要为def update
@user = User.friendly.find(params[:id])
@page_has_darker_background = true
if @user.update(user_params)
redirect_to user_show_path_helper(@user), :notice => params['user']['finish_signup'] ? t('created') : t('update')
else
render 'edit'
end
end
的每个条目设置唯一Preference
属性。我无法使用(RobberID)
约束执行此操作,因为可能存在多个具有相同UNIQUE
的记录。如果不将它包含在主键中,有没有办法做到这一点?
Preference
编辑:仅对RobberID有用,而不是(RobberID,SkillID)。
答案 0 :(得分:3)
您可以为多个字段创建唯一索引。
CREATE UNIQUE INDEX index1 ON info.HasSkills (RobberID, SkillID,Preference )
因此,三列的组合必须是唯一的。
答案 1 :(得分:2)
您可以在create table
语句中执行此操作,也可以通过显式创建索引(两者都做同样的事情):
CREATE TABLE info.HasSkills (
RobberID INTEGER,
SkillID INTEGER,
Preference INTEGER NOT NULL, --problem
PRIMARY KEY(RobberID, SkillID),
FOREIGN KEY(RobberID) REFERENCES info.Robber(RobberID)
FOREIGN KEY(SkillID) REFERENCES info.Skills(SkillID),
CONSTRAINT unq_RobberId_SkillId_Preference UNIQUE (RobberId, Preference)
);