clear not working on edge Rails with has_many :through?

I have three models in an app using edge rails (currently r4833):

class Magazine < ActiveRecord::Base   has_many :subscriptions   has_many :users, :through => :subscriptions end

class Subscription < ActiveRecord::Base   belongs_to :user   belongs_to :magazine end

class User < ActiveRecord::Base   has_many :subscriptions   has_many :magazines, :through => :subscriptions end

I can then create instances and associate them with no problems:

user1 = User.create(:name => "Bob") user2 = User.create(:name => "Fred") magazine = Magazine.create(:name => "WTF?!") magazine.users << user1 magazine.users << user2

magazine.users

=> [#<User:0x2491238 @attributes={"name"=>"Bob", "id"=>1, "subscription_id"=>nil}, @new_record=false, @new_record_before_save=true, @errors=#<ActiveRecord::Errors:0x2427e3c @base=#<User:0x2491238 ...>, @errors={}>>, #<User:0x241dea0 @attributes={"name"=>"Fred", "id"=>2, "subscription_id"=>nil}, @new_record=false, @new_record_before_save=true, @errors=#<ActiveRecord::Errors:0x241c870 @base=#<User:0x241dea0 ...>, @errors={}>>]

Ok, cool, stuff is working so far. Now, though, I want to clear WTF?!'s subscription list:

magazine.users.clear

=>

magazine.save

=> true

This causes the following statement to be run:

Magazine Update (0.001742) UPDATE magazines SET "subscription_id" = NULL, "name" = 'WTF?!' WHERE id = 1

And this seems to have worked:

magazine.subscription_id

=> nil

However, if I reload the model, I suddenly have my old users!

magazine.reload

=> #<Magazine:0x23fd7a4 @subscriptions=nil, @attributes={"name"=>"WTF?!", "id"=>"1", "subscription_id"=>nil}, @users=nil, @errors=#<ActiveRecord::Errors:0x23e20e4 @base=#<Magazine:0x23fd7a4 ...>, @errors={}>, @new_record_before_save=nil>

magazine.users

=> [#<User:0x2389fe8 @attributes={"name"=>"Bob", "id"=>"1", "subscription_id"=>nil}>, #<User:0x2389fac @attributes={"name"=>"Fred", "id"=>"2", "subscription_id"=>nil}>]

magazine.subscription_id

=> nil

Huh? What am I missing? I wouldn't expect nil ids to ever match!

A second question, is there any way to *delete* rows in the join table? Rather than simply nullifying the join table rows, I'd like to kill them completely. Is that possible?