ruby-on-rails-3.2 - 在 Ruby on Rails 3.2.14/Ruby 2.0.0/PostgreSQL 9.2.4 中使用 activerecord 从序列中检索 nextval

标签 ruby-on-rails-3.2 rails-activerecord postgresql-9.2 rails-postgresql

这应该很简单。我想检索序列的 nextval ......它不是默认值......它不是主键......它不是外键。在极少数情况下,我需要用户提供的值的序列号。

我尝试了以下方法:

@nextid = ActiveRecord::Base.connection.execute("SELECT nextval('xscrpt_id_seq')")

我得到的是:
#<PG::Result:0x007fe668a854e8 @connection=#<PG::Connection:0x00000003aeff30>>

并通过使用
@nextid[0]["nextval"]

我可以获得正确的值,但这似乎不是解决问题的正确方法。我搜索过,我读过“Pro Active Record”,它说使用:
M_script.find_by_sql("SELECT nextval('xscript_id_seq')")

但是,那没有用。

任何关于从 ROR 中的序列中检索 nextval 的“正确”(Rails 方式)的提示,将不胜感激!

最佳答案

您可能想使用 select_valuesequence_name :

Xscrpt.connection.select_value("select nextval('#{Xscrpt.sequence_name}')").to_i

关于ruby-on-rails-3.2 - 在 Ruby on Rails 3.2.14/Ruby 2.0.0/PostgreSQL 9.2.4 中使用 activerecord 从序列中检索 nextval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17954524/

相关文章:

ruby-on-rails - 如何从rails中的多个表中选择列?

ruby-on-rails - 在不删除默认值 `*` 的情况下扩展 SELECT

postgresql - 如何在postgresql中使用日期格式?

ruby-on-rails - 在单个模型上设置default_timezone

ruby-on-rails - Rails : Calling . limit(5) 更改结果顺序

sql - 如何在 Postgresql 中将 LIKE 与 ANY 一起使用?

postgresql - Airflow psycopg2.OperationalError : FATAL: sorry, 已经有太多客户端

ruby-on-rails - ActionController::UnknownFormat 与 rspec 和 post 请求

mysql - 如何使用 ruby​​ (mysql2 gem) 在 MySQL 5.5 中存储 4 字节字符

ruby-on-rails - 在 Rails 中,如何将 Assets 管道中的样式表作为 &lt;style&gt; 标记包含在内?