HasManyThroughCantAssociateNewRecords Exception

I have a model: class Video < ActiveRecord::Base   has_many :video_tags   has_many :video_types   has_many :tags, :through => :video_tags, :uniq => :true   has_many :types, :through => :video_types, :uniq => :true

  def get_tag_list(delimiter)     tags.collect { |t| t.tag }.join(delimiter)   end

  def set_tag_list(tag_list, delimiter)     # doesn't remove old tags     tag_list.split(',').each do |t|       tags << Tag.find_or_create_by_tag(t)     end   end end

When I call @video.set_tag_list(params[:tag_list], ',') in my controller, it throws the exception - Cannot associate new records through 'Video#video_tags' on '#'. Both records must have an id in order to create the has_many :through record associating them. However, in the script/console, the method call works just fine. What could be causing this problem?