Has_many :through - replace and clear Don't Work?

I have the following setup:

class NewsItem < ActiveRecord::Base
has_many :connections, :as => :connectable, :dependent => :destroy
has_many :ideas, :through => :connections

The relationship is a has_many :through that is also polymorphic.

I can add ideas to news items with this code:


related_ideas is an array of ideas.

The problem comes when I try to update the ideas for an existing news

First I tried this:


This literally does nothing - no log output at all, no DB activity.

Then I tried this:


Again, nothing at all. No error, nada. I would have expected the
‘clear’ method call to remove the records that associate the news
items and the ideas.

What am I doing wrong?


Not sure why what you’re trying doesn’t work, but as a workaround until
that gets figured out, how about…

@news_item.ideas = new_ideas

Doing that gives me a no such method error:

undefined method `ideas=’ for #NewsItem:0x31724bc

Can relationships be accessed in that manner?

I know that I could do:

@news_item.ideas << new_ideas

But that won’t clear the old ones, just add new ones…

Any other ideas?