如何通过Ruby PostgreSQL gem获取自动生成的行主键?

如何通过Ruby PostgreSQL gem获取自动生成的行主键?,ruby,postgresql,Ruby,Postgresql,我在PostgreSQL中的表如下所示: CREATE TABLE user ( id SERIAL PRIMARY KEY, name VARCHAR(255) NOT NULL ) res = conn.exec("INSERT INTO users (name) VALUES ('john') returning id") res[0]['id'] #=> 1 我正在使用Ruby gem向表中添加一条记录: c = PG.connect(dbname: 'foo') i

我在PostgreSQL中的表如下所示:

CREATE TABLE user (
  id SERIAL PRIMARY KEY,
  name VARCHAR(255) NOT NULL
)
res  = conn.exec("INSERT INTO users (name) VALUES ('john') returning id")
res[0]['id']
#=> 1
我正在使用Ruby gem向表中添加一条记录:

c = PG.connect(dbname: 'foo')
id = c.exec_params('INSERT INTO user (name) VALUES ($1)', ['Jeff']).oid_value
我将返回
nil
,而不是自动生成的新记录的
id
。取回它的正确方法是什么?

根据,如果您检索的对象id未设置,则为零

您可以自己设置对象id,也可以像这样使用
返回

CREATE TABLE user (
  id SERIAL PRIMARY KEY,
  name VARCHAR(255) NOT NULL
)
res  = conn.exec("INSERT INTO users (name) VALUES ('john') returning id")
res[0]['id']
#=> 1