前提・実現したいこと
Railsでモデルを生成する際に、特定のカラムの中の最大値+1で設定する方法を教えてください。
Ruby
1Hoge.create(ord: xxx, name: 'D')
上記xxxの個所は以下のSQLで設定できる値にしたいです。
SQL
1insert into t select coalesce(max(ord)+1,1),'D' from t where name='D';
テーブルtのデータは以下のようになっており、上記SQLにより「1,'D'」の行が増えるようになります。
SQL
1select * from t; 2+------+------+ 3| ord | name | 4+------+------+ 5| 1 | A | 6| 1 | B | 7| 1 | C | 8| 2 | A | 9| 3 | A | 10| 2 | B | 11+------+------+
発生している問題・エラーメッセージ
なし
該当のソースコード
最初に記載したとおりです。
試したこと
create内でwhereとmaximumで取得した場合、同時更新に対応できないと思い、他の実現方法を探しています。
補足情報(FW/ツールのバージョンなど)
特にありません。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/16 12:56
2020/05/17 00:57
2020/05/17 01:09
2020/05/17 11:36