ActiveRecord + has_and_belongs_to_many: My own little problem ;)

The models:
class Search < ActiveRecord::Base
   has_and_belongs_to_many :dcresults

class Dcresult < ActiveRecord::Base
has_and_belongs_to_many :searches

The code:

@links = Array.new
@titles = Array.new

#build search results in the arrays
.....

#results built

@titles.each_index do |index|
         if !Dcresult.exists?(:title => @titles[index], :link=>
@links[index])
           search.dcresults.build(:title => @titles[index], :link =>
@links[index])
        else
          @dcresult = Dcresult.find (:first, :conditions => [ "link
= ?", @links[index]])
          #@dcresult = Dcresult.
          search.dcresults<<@dcresult
       end

Abstract: I build the results in two arays. Then i loop the arrays and
check if a certain result already exists. If the result already exists
I don't want to build a new result. I want to associate the already
existing result to the new search.

Error:
Mysql::Error: #23000Column 'dcresult_id' cannot be null: INSERT INTO
dcresults_searches (`search_id`, `dcresult_id`) VALUES (204, NULL)

SQL TABLES:
CREATE TABLE `wozzhotdb`.`searches` (
  `id` int(11) NOT NULL auto_increment,
  `query` varchar(1048) default NULL,
  `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update
CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=205 DEFAULT CHARSET=latin1

CREATE TABLE `wozzhotdb`.`dcresults` (
  `ID` int(11) NOT NULL auto_increment,
  `title` varchar(1024) default NULL,
  `link` varchar(1024) default NULL,
  PRIMARY KEY (`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=2574 DEFAULT CHARSET=latin1

CREATE TABLE `wozzhotdb`.`dcresults_searches` (
  `search_id` int(11) NOT NULL,
  `dcresult_id` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1

Thanks for your help in advance!

Come'on people it should be an easy question! You can do it :wink:

I already fixed it. The code was OK but the problem was on the
databases (i Guess). I redid the databases with migrations and now it
works.
Yuupi!