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

  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

我错过了什么?请分享你的解决方案。
(使用Ruby1.9.3和ActiveRecord4.2.4)

最佳答案

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

10-08 07:06