这应该很简单。我想检索序列的 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_value
和 sequence_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/