我继承了一个web应用程序项目,ruby on rails背后的所有隐含魔力有时仍然让我着迷。我创建了两个新表和关联的控制器——invoice_items和invoice_items,它们之间有一个外键。在我的rails应用程序中,当插件崩溃时,我会处理它。
PG::InsufficientPrivilege: ERROR: permission denied for relation invoices
: INSERT INTO "invoices" ("created_at", "invoice_item_id", "quantity", "amount", "description",
"person_id", "effective_date", "schedule") VALUES ($1, $2, $3, $4, $5, $6, $7, $8) RETURNING "id"
app/controllers/registrations_controller.rb:22:in `confirm_bill'
我是rails/Postgres的新手。我希望看到">表发票的权限被拒绝"。在这种错误上下文中,术语关系是否可以与术语表互换?如果没有,如何授予关系权限?我提供了invoice_item_id,因此不需要加入invoice_id。当我作为app_student(rails用户(登录时,我还可以在表上手动插入。
有很多关于将所有权限授予用户的帖子,但我试图遵循最小权限的原则。应用程序用户只需要插入,因为另一个流程将提取发票并进行处理。据我所知,没有其他需要额外权限的内容。
GRANT INSERT ON TABLE public.invoices TO app_student;
为什么我的ruby on rails用户的权限不足?
一时兴起,我将选择权限授予了rails应用程序用户。我仍然不知道为什么,但这解决了我的问题。rails用户必须进行一些后续操作才能看到插入成功。那更多的铁轨是"魔法"吗?
GRANT SELECT, INSERT ON TABLE public.invoices TO app_student;