1

我需要在下面执行这些 SQL,但我无法得到结果。

newid=Header.find_by_sql(
  "SELECT coalesce(max(transaction_id),0)+1 AS id 
  FROM transaction_headers 
  WHERE transaction_year = #{Time.now.year} AND 
  transaction_type='#{fields[:transaction_type]}'"
)

但我似乎无法将结果传递给 newid。我得到的唯一值是 [#<Header>] 任何人都可以帮助我为 Ruby 创建正确的语句吗?

编辑:表字段

-------------------------------------------------- ---------------------------------
| 交易类型 | 交易年 | 交易ID | 客户 ID | uid | 日期 |
-------------------------------------------------- ---------------------------------

谢谢你。

4

2 回答 2

2

您正在获得一个 Header 对象(将填充一个 id),所以我认为在您的情况下 newid.id 实际上会给您您正在寻找的 id ,或者如果您想要这些值的数组,请执行以下操作:

headers = Header.find_by_sql(...)
header_ids = headers.collect(&:id)

高温高压

于 2010-07-15T03:12:10.783 回答
0

您从中得到的find是一个 Header 对象数组。

headers = Header.find_by_sql(...)
newid = headers.first.id

我可能会问自己为什么我id需要

于 2010-07-15T03:26:04.330 回答