Using the following gems on Oracle 11g

gem 'sequel', '3.32.0'
gem 'ruby-oci8', '2.1.0'

I have the following table in place:

 DB.create_table :servers do
  primary_key :id
  String :site
  String :p4port
  String :service
  String :monitored
 end

I have a working sequence and trigger in place to provide auto_increment 
functionality when inserting into this table.

I can verify that this works by issuing an INSERT SQL statement directly 
(omitting the id field) into an Oracle client.

In Rails, my controller attempts to create a new record using Sequel model:

 # model
 class Server < Sequel::Model
 end

 # controller
 @server = Server.new
 @server.site           = params[:site]
 @server.p4port       = params[:p4port]
 @server.service      = params[:service]
 @server.monitored   = params[:monitored]
 @server.save

This results in the following error:

 (0.000007s) Transaction.begin
 (0.001127s) INSERT INTO "SERVERS" ("SITE", "P4PORT", "SERVICE", 
"MONITORED") VALUES ('SVL', 'foobar:1666', 'PRODUCTION', 'Y')
 (0.000891s) SELECT * FROM (SELECT * FROM "SERVERS" WHERE ("ID" IS NULL)) 
"T1" WHERE (ROWNUM <= 1)
 (0.003289s) Transaction.rollback
 Completed 500 Internal Server Error in 10ms

 Sequel::Error (Record not found):
  app/controllers/admin/servers_controller.rb:18:in `create'

(line 18 is the @server.save line)


The WHERE ID IS NULL clause is suspicious, as it appears that the trigger 
is not being fired.  I'm baffled by this because the trigger *does* work 
properly outside of Sequel.

Any ideas?

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sequel-talk/-/a-j4gNShPO8J.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sequel-talk?hl=en.

Reply via email to