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
end

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

I can add ideas to news items with this code:

@news_item.ideas.push(related_ideas)

related_ideas is an array of ideas.

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

First I tried this:

@news_item.ideas.replace(new_ideas)

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

Then I tried this:

@news_item.ideas.clear
@news_item.ideas.push(new_ideas)

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?

Thanks,
Hunter

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?

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs