2016-11-11 5 views
3

データベース内の既存のテーブルに新しいレコードを挿入する必要があります。私が行方不明です何Ruby(レールなし)でactiverecordを使用すると、挿入されません

ActiveRecord::StatementInvalid: OCIError: ORA-00926: 
    missing VALUES keyword: INSERT INTO "USER_DETAIL" DEFAULT VALUES 

class UserDetail < ActiveRecord::Base 

def self.add_new_user 
    new_user = UserDetail.new 
    new_user.first_name = 'Joe' 
    new_user.last_name = 'Smith' 
    new_user.user_id = 'TEST' 
    new_user.save 
end 

def self.add_new_user_2 

UserDetail.create(user_id: 'TEST', first_name: 'Joe', 
        last_name: 'Smith') 
end 

は、しかし、両方のアプローチは私に以下のエラーを与える:私は、以下の両方のアプローチを試してみましたか?あなたの解決策を教えてください。 (Rubyの1.9.3、ActiveRecordの4.2.4を使用して)

+0

どのOracleアダプタを使用していますか? –

+0

私は使用しています:gem 'activerecord-oracle_enhanced-adapter'、 '1.6.7' – fongfong

答えて

3

ActiveRecordのは、主キーについての仮定を行います。 UserDetailテーブルの "ID"という主キーを見つけることが期待されています。似たようなものになるはずです。

class UserDetail < ActiveRecord::Base 
    self.table_name = :user_detail 
    self.primary_key = :user_id 

    def self.add_new_user 
     new_user = UserDetail.new 
     new_user.first_name = 'Joe' 
     new_user.last_name = 'Smith' 
     new_user.user_id = 1 
     new_user.save 
    end 
end 
+0

あなたの返信ありがとう!ただし、USER_DETAIL表には主キーはありません。** USER_EXPIRE_DT_UK **(USER_IDおよびEXPIRE_DT USER_DETAIL表の2つの列)という制約があります。これをActiveRecordモデルクラスでどのように定義すればよいですか? – fongfong

+0

@ user3314970 \t ID列の変更については、ARドキュメントで詳しく説明しています。http://guides.rubyonrails.org/active_record_basics.html#overriding-the-naming-conventions –

関連する問題