Polymorphic has_many :through, and the << method

I'm trying to persuade polymorphic has_many :through methods to work properly.

Some background - I have users moderating messages & photos. So, the models are Account, Moderation, Message, and Photo. An account has_many moderations, and has_many messages and photos through moderations. I'm just going to talk about messages here for brevity - no photos.

class Account < ActiveRecord::Base   has_many :moderations

  has_many :messages, :through => :moderations, :source => :message,     :conditions => "moderations.content_type = 'Message'" end

class Moderation < ActiveRecord::Base   belongs_to :account   belongs_to :content, :polymorphic => true

  belongs_to :message, :foreign_key => 'content_id' end

class Message < ActiveRecord::Base   has_many :moderations, :as => :content   has_many :accounts, :through => :moderations end

This is really close to working properly. I can do @account.messages or @message.accounts and it'll work fine. However, trying to use one of the habtm association methods usually fails. For instance :

@account.messages << new_message

NoMethodError: undefined method `message_id=' for #<Moderation: 0x22ed8c8>

I've worked around it by adding a message_id= method to the Moderation class, which simply sets content_id appropriately. But I'm sure I'm missing some magic option on the has_many :through relationship that will fix this.

Any ideas? Cheers, Jon