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!

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