gpt4 book ai didi

ruby-on-rails - 快速高效地检索数据

转载 作者:行者123 更新时间:2023-11-29 12:20:30 26 4
gpt4 key购买 nike

我正在使用 Ruby On Rails 和 Postgresql 作为数据库。

我的用户订阅了一个计划,根据他们的计划,他们被允许使用许多资源,我有一个数据库表来跟踪他们的使用情况。我需要检查它们在多个操作上的用法,我想知道是否有处理这些数据(存储和检索)的最佳实践

我的 table : UserStats:id(pk)、projects_left、keys_left、user_id

通常在 create actions 上,我检索数据,然后更新 userstats 表上的数据,还有很多地方我只是在表上进行选择。

最佳答案

如果资源也存储为数据库表,您可以考虑在插入这些表时创建触发器,如果​​它们超出限制,这将导致插入失败。

这样您就不需要更新 UserStats,您只需存储它们的最大允许值。

我相信它不太容易出错,无需额外代码即可处理删除,并允许其他应用修改数据库

例如:

CREATE OR REPLACE FUNCTION check_limits_projects(int user_id) RETURNS TRIGGER AS
DECLARE
my_projects_count INT
my_project_limit INT
BEGIN
SELECT count(*) INTO my_projects_count FROM projects WHERE user_id = NEW.user_id
SELECT projects_left INTO my_projects_limit FROM UserStats WHERE user_id = NEW.user_id
IF (my_project_count >= my_project_limit) THEN
RETURN FALSE
END IF
RETURN NEW
END

CREATE TRIGGER 'limit_check' BERFORE INSERT ON projects;

关于ruby-on-rails - 快速高效地检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27798216/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com