Railsの規約に沿わないシーケンスオブジェクトを利用する

  • モデルでself.sequence_name = 'hoge_sequence'などと書く。
  • select hoge_sequence.nextval from dualなどを直接実行する。

もうちょい詳しく

USERSテーブルがある場合、Rails的にはUSERS_SEQというシーケンスがあることを想定している。

USERSが新しく作るテーブルならそれでもいいだろうけど、既存のテーブルで、シーケンス名も規約外だったりする場合は特別に対処する必要がある。

アソシエーションを指定する

という言い方で合っているのかどうなのか。。

self.sequence_name = 'hoge_sequence'する。primary keyを指定するのと同じノリ。

直接SQLを発行する

oracleならこう。

@conn.exec('Select NEXT_ID.NEXTVAL from dual') {|row| id = row[0]}

id = @conn.exec('Select NEXT_ID.NEXTVAL from dual').fetch[0]

参考