Postgres permissions to insert, but not return.
Postgres permissions can be harsh. If you don't have the select permission on a table you might not be able to do some very rails like things that you think you ought to be able to do, take my friend Jimmy.
set role 'admin'; create role 'jimmy'; create table fruits (id serial primary key, name varchar); grant insert on fruits to jimmy; grant usage on fruits_id_seq to jimmy;
Given these permissions it's possible for Jimmy to make inserts into the fruit table like so:
set role 'jimmy'; insert into fruits (name) values ('Apple'); INSERT 0 1
But Rails wants a little more, it wants to know the id of the thing that was just created which is a problem because Jimmy doesn't have select permissions.
set role 'jimmy'; insert into fruits (name) values ('Orange') returning id; ERROR: permission denied for relation fruits
Argh this complicates matters, but I'll relent and give Jimmy the appropriate permissions so that he can add records through ActiveRecord.
set role 'admin'; grant select on fruits to jimmy; set role 'jimmy'; insert into fruits (name) values ('orange') returning id; id ---- 2