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 の正しいステートメントを作成するのを手伝ってくれる人はいますか?

編集: テーブル フィールド

-------------------------------------------------- ----------------------------------
| | トランザクション タイプ | transaction_year | トランザクション ID | customer_id | ユーザーID | 日付 |
-------------------------------------------------- ----------------------------------

ありがとうございました。

4

2 に答える 2

2

Header オブジェクト (ID が入力される) を取得しているので、あなたの場合、 newid.id は実際に探している ID を提供すると思います。または、これらの値の配列が必要な場合は、次のようにします。

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

HTH

于 2010-07-15T03:12:10.783 に答える
0

から返されるのfindは、ヘッダーオブジェクトの配列です。

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

なぜ必要なのか自問するかもしれませんid

于 2010-07-15T03:26:04.330 に答える