5

私はActiveRecordをレガシーOracleデータベースでの開発にのみ使用しています。私のアダプターは activerecord-oracle_enhanced-adapter ( https://github.com/rsim/oracle-enhanced ) です。したがって、主キーの生成をARで処理したくありません。シーケンスによって生成された主キーを無効にする方法は?

class User < Activied::Base
  self.table_name = "users"
  self.primary_key = "user_id"
end

user = User.new
user.save

次に、エラーが発生しました:

stmt.c:230:in oci8lib_191.so: ORA-02289: sequence does not exist (OCIError)

コードを次のように変更すると

class User < ActiveRecord::Base
  self.table_name = 'users'
  self.primary_key = "user_id"
  self.sequence_name = nil
end

別のエラーが発生しました:

stmt.c:230:in oci8lib_191.so: ORA-00936: missing expression (OCIError)

では、主キーを手動で管理する方法を知っている人はいますか? 簡単な挿入をしたいだけです。

ありがとう

4

1 に答える 1

4

手遅れかもしれませんが、ついに答えが見つかりました。まもなく:

self.sequence_name = :autogenerated

ここのソースコードのコメントから:

使用上の注意:

# * Key generation assumes a "${table_name}_seq" sequence is available
# for all tables; the sequence name can be changed using
# ActiveRecord::Base.set_sequence_name. When using Migrations, these
# sequences are created automatically.

# ***Use set_sequence_name :autogenerated **** with legacy tables that have
# triggers that populate primary keys automatically.**
于 2014-01-18T08:51:45.013 に答える