Ruby(没有rails)使用activerecord,insert into不起作用

时间:2016-11-11 17:22:40

标签: ruby oracle activerecord

我需要在数据库中的现有表中插入新记录。我尝试了以下两种方法:

  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

但是,这两种方法都给出了以下错误:

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

我错过了什么?请分享您的解决方案。

(使用Ruby 1.9.3,ActiveRecord 4.2.4)

1 个答案:

答案 0 :(得分:3)

ActiveRecord对主键进行假设。期望在UserDetail表上找到一个名为&#34; ID&#34;的主键。应该看起来像。

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