我正在使用我的网络应用程序,使用Rails和Angular。我有一个旧版本的Rails API,其中表中有一个名为“active”的列。视图上有一个带有此布尔值的复选框。但问题是我想在视图中从'active'字词迁移到'passive'字样,所以我需要反转'active'的当前布尔值。由于我有一个稳定的旧API工作版本,我不能像往常一样反转它。我需要在我的表中创建另一列(称为“被动”)作为“活动”列的依赖项,因为我想添加新功能而不想破坏旧版本。我怎么才能简单地实现它?我正在使用postgres。
答案 0 :(得分:0)
你可以从postgres db方面分三步完成这个步骤。
1:创建被动布尔列。
ALTER TABLE foo ADD COLUMN passive boolean;
2:根据活动列填充新的被动列。
UPDATE foo SET passive = CASE WHEN active is true THEN false ELSE true END;
3:创建一个触发器以维持被动布尔值。
定义触发功能:
CREATE FUNCTION set_passive() RETURNS trigger AS $set_passive$
BEGIN
IF NEW.active is true THEN
NEW.passive := false;
ELSE
NEW.passive := true;
END IF;
RETURN NEW;
END;
在桌面上设置触发器:
CREATE TRIGGER foo_maintain_passive
AFTER INSERT OR UPDATE ON foo
FOR EACH ROW EXECUTE PROCEDURE set_passive();