Errors when trying to persist has_many :through objects using Rails 2.0.1 and 
activerecord-jdbc-adapter 0.6
-----------------------------------------------------------------------------------------------------------

                 Key: JRUBY-1717
                 URL: http://jira.codehaus.org/browse/JRUBY-1717
             Project: JRuby
          Issue Type: Bug
    Affects Versions: JRuby 1.1b1, JRuby 1.0.2
         Environment: JRuby 1.0.2 and JRuby 1.1b1
Oracle and MySQL
activerecord-jdbc-adapter 0.6
Rails 2.0.1
            Reporter: Daniel Wintschel
            Assignee: Thomas E Enebo
            Priority: Critical


I have a has_many :through relationship ( Role has_many Rights :through => 
PermissionGroups ). After upgrading to Rails 2.0.1, I am no longer able to save 
them. Cryptic errors abound. I ran many tests.

MySQL + MRI + Rails 1.2.6 ==> WORKS
MySQL + MRI + Rails 2.0.1 ==> WORKS
MySQL + JRuby (1.0.2 || 1.1b1) + activerecord-jdbc-adapter 0.6 + Rails 1.2.6 
==> WORKS
Oracle + JRuby (1.0.2 || 1.1b1) + activerecord-jdbc-adapter 0.6 + Rails 1.2.6 
==> WORKS
MySQL + JRuby (1.0.2 || 1.1b1) + activerecord-jdbc-adapter 0.6 + Rails 2.0.1 
==> FAILS
Oracle + JRuby (1.0.2 || 1.1b1) + activerecord-jdbc-adapter 0.6 + Rails 2.0.1 
==> FAILS

See all the script/console stuff and errors and class definitions below.


============================
Relevant bits of Role / Right class
============================

class Role < ActiveRecord::Base
  has_many :rights, :through => :permission_groups
end

class Right < ActiveRecord::Base
  has_many :roles, :through => :permission_groups
end

============================
Using MRI
MySQL
Rails 2.0.1
============================
danbookpro:~/Work daniel$ ruby script/console
Loading development environment (Rails 2.0.1)
>> role_rights   = Right.create( {:name => "Administrator - Full Access To 
>> Roles", :actions => "*", :controller_name => "Admin::RolesController"} )
=> #<Right id: 3, name: "Administrator - Full Access To Roles", 
controller_name: "Admin::RolesController", actions: "*">
>> right_rights  = Right.create( {:name => "Administrator - Full Access To 
>> Rights", :actions => "*", :controller_name => "Admin::RightsController"} )
=> #<Right id: 4, name: "Administrator - Full Access To Rights", 
controller_name: "Admin::RightsController", actions: "*">
>> admin_role    = Role.create( {:name => "Administrator", :description => 
>> "System defined super user - access to right and role management."} )
=> #<Role id: 2, name: "Administrator", description: "System defined super user 
- access to right and rol...">
>> admin_role.rights << role_rights
=> [#<Right id: 3, name: "Administrator - Full Access To Roles", 
controller_name: "Admin::RolesController", actions: "*">]
>> admin_role.rights << right_rights
=> [#<Right id: 3, name: "Administrator - Full Access To Roles", 
controller_name: "Admin::RolesController", actions: "*">, #<Right id: 4, name: 
"Administrator - Full Access To Rights", controller_name: 
"Admin::RightsController", actions: "*">]
>> admin_role.save
=> true


============================
JRuby 1.1b1 (error occurs in 1.0.2 as well - but stack trace is different)
activerecord-jdbc-adapter 0.6
Rails 2.0.1
Oracle && MySQL (Tested on both Oracle and MySQL Database)
============================
danbookpro:~/Work daniel$ jruby script/console
Loading development environment (Rails 2.0.1)
>> role_rights   = Right.create( {:name => "Administrator - Full Access To 
>> Roles", :actions => "*", :controller_name => "Admin::RolesController"} )
=> #<Right id: 10002, name: "Administrator - Full Access To Roles", 
controller_name: "Admin::RolesController", actions: "*">
>> right_rights  = Right.create( {:name => "Administrator - Full Access To 
>> Rights", :actions => "*", :controller_name => "Admin::RightsController"} )
=> #<Right id: 10003, name: "Administrator - Full Access To Rights", 
controller_name: "Admin::RightsController", actions: "*">
>> admin_role    = Role.create( {:name => "Administrator", :description => 
>> "System defined super user - access to right and role management."} )
=> #<Role id: 10001, name: "Administrator", description: "System defined super 
user - access to right and rol...">
>> admin_role.rights << role_rights
=> [#<Right id: 10002, name: "Administrator - Full Access To Roles", 
controller_name: "Admin::RolesController", actions: "*">]
>> admin_role.rights << right_rights
=> [#<Right id: 10002, name: "Administrator - Full Access To Roles", 
controller_name: "Admin::RolesController", actions: "*">, #<Right id: 10003, 
name: "Administrator - Full Access To Rights", controller_name: 
"Admin::RightsController", actions: "*">]
>> admin_role.save
ArgumentError: wrong # of arguments(2 for 1)
        from 
/Users/daniel/Work/vendor/rails/activerecord/lib/active_record/base.rb:2172:in 
`update'
        from 
/Users/daniel/Work/vendor/rails/activerecord/lib/active_record/locking/optimistic.rb:70:in
 `update_with_lock'
        from 
/Users/daniel/Work/vendor/rails/activerecord/lib/active_record/callbacks.rb:240:in
 `update_with_callbacks'
        from 
/Users/daniel/Work/vendor/rails/activerecord/lib/active_record/timestamp.rb:38:in
 `update_with_timestamps'
        from 
/Users/daniel/Work/vendor/rails/activerecord/lib/active_record/base.rb:2165:in 
`create_or_update'
        from 
/Users/daniel/Work/vendor/rails/activerecord/lib/active_record/callbacks.rb:213:in
 `create_or_update_with_callbacks'
        from 
/Users/daniel/Work/vendor/rails/activerecord/lib/active_record/base.rb:1899:in 
`save'
        from 
/Users/daniel/Work/vendor/rails/activerecord/lib/active_record/validations.rb:901:in
 `save_with_validation'
        from 
/Users/daniel/Work/vendor/rails/activerecord/lib/active_record/transactions.rb:108:in
 `save_with_transactions'
        from 
/Users/daniel/Work/vendor/rails/activerecord/lib/active_record/transactions.rb:108:in
 `transaction'
        from 
/Users/daniel/Work/vendor/rails/activerecord/lib/active_record/transactions.rb:80:in
 `transaction'
        from 
/Users/daniel/Work/vendor/rails/activerecord/lib/active_record/transactions.rb:76:in
 `transaction'
        from 
/Users/daniel/Work/vendor/rails/activerecord/lib/active_record/transactions.rb:108:in
 `save_with_transactions'
        from 
/Users/daniel/Work/vendor/rails/activerecord/lib/active_record/transactions.rb:108:in
 `rollback_active_record_state!'
        from 
/Users/daniel/Work/vendor/rails/activerecord/lib/active_record/transactions.rb:108:in
 `save_with_transactions'
        from 
/Users/daniel/Work/vendor/rails/activerecord/lib/active_record/transactions.rb:108:in
 `binding'


============================
JRuby 1.1b1
activerecord-jdbc-adapter 0.6
Rails 1.2.6
Oracle
============================
>> role_rights   = Right.create( {:name => "Administrator - Full Access To 
>> Roles", :actions => "*", :controller_name => "Admin::RolesController"} )    
=> #<Right:0x1505b41 @attributes={"name"=>"Administrator - Full Access To 
Roles", "id"=>10002, "controller_name"=>"Admin::RolesController", 
"actions"=>"*"}, @new_record_before_save=true, 
@errors=#<ActiveRecord::Errors:0x183bd71 @errors={}, @base=#<Right:0x1505b41 
...>>, @new_record=false>
>> right_rights  = Right.create( {:name => "Administrator - Full Access To 
>> Rights", :actions => "*", :controller_name => "Admin::RightsController"} )
=> #<Right:0x683bfc @attributes={"name"=>"Administrator - Full Access To 
Rights", "id"=>10003, "controller_name"=>"Admin::RightsController", 
"actions"=>"*"}, @new_record_before_save=true, 
@errors=#<ActiveRecord::Errors:0x36ea72 @errors={}, @base=#<Right:0x683bfc 
...>>, @new_record=false>
>> admin_role    = Role.create( {:name => "Administrator", :description => 
>> "System defined super user - access to right and role management."} )
=> #<Role:0xe551a4 @attributes={"name"=>"Administrator", "id"=>10001, 
"description"=>"System defined super user - access to right and role 
management."}, @new_record_before_save=true, 
@errors=#<ActiveRecord::Errors:0xd952d1 @errors={}, @base=#<Role:0xe551a4 
...>>, @new_record=false>
>> admin_role.rights << role_rights
=> [#<Right:0x1505b41 @attributes={"name"=>"Administrator - Full Access To 
Roles", "id"=>10002, "controller_name"=>"Admin::RolesController", 
"actions"=>"*"}, @new_record_before_save=true, 
@errors=#<ActiveRecord::Errors:0x183bd71 @errors={}, @base=#<Right:0x1505b41 
...>>, @new_record=false>]
>> admin_role.rights << right_rights
=> [#<Right:0x1505b41 @attributes={"name"=>"Administrator - Full Access To 
Roles", "id"=>10002, "controller_name"=>"Admin::RolesController", 
"actions"=>"*"}, @new_record_before_save=true, 
@errors=#<ActiveRecord::Errors:0x183bd71 @errors={}, @base=#<Right:0x1505b41 
...>>, @new_record=false>, #<Right:0x683bfc @attributes={"name"=>"Administrator 
- Full Access To Rights", "id"=>10003, 
"controller_name"=>"Admin::RightsController", "actions"=>"*"}, 
@new_record_before_save=true, @errors=#<ActiveRecord::Errors:0x36ea72 
@errors={}, @base=#<Right:0x683bfc ...>>, @new_record=false>]
>> admin_role.save
=> true
>> 


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe from this list please visit:

    http://xircles.codehaus.org/manage_email

Reply via email to