I''m having a problem with a has_and_belongs_to_many (habtm)
association between two models with extra attributes. I''m writing a
comic book database, and each issue has many creators on it. Thing
is, some creators perform multiple duties. They may write one issue,
draw another, etc.
However, if I add a creator twice to an issue and try to delete it, it
removes both creators:
@issue.creators.delete(@creator)
rabble from #rubyonrails suggested adding multiple habtm associatings
in the Issue object. Here''s how they look:
class Issue < ActiveRecord::Base
has_and_belongs_to_many :creators
has_and_belongs_to_many :writers,
:class_name=>''Creator'',
:association_foreign_key=>''creator_id'',
:conditions=>''creator_job_id=1''
has_and_belongs_to_many :pencillers,
:class_name=>''Creator'',
:association_foreign_key=>''creator_id'',
:conditions=>''creator_job_id=2''
has_and_belongs_to_many :inkers,
:class_name=>''Creator'',
:association_foreign_key=>''creator_id'',
:conditions=>''creator_job_id=3''
has_and_belongs_to_many :colorists,
:class_name=>''Creator'',
:association_foreign_key=>''creator_id'',
:conditions=>''creator_job_id=4''
has_and_belongs_to_many :letterers,
:class_name=>''Creator'',
:association_foreign_key=>''creator_id'',
:conditions=>''creator_job_id=5''
class Creator < ActiveRecord::Base
has_and_belongs_to_many :issues
My join table looks like this:
creators_issues
issue_id INT
creator_id INT
creator_job_id INT
If I use this code, it still deletes all instances of that creator:
creator = @issue.writers.find(1)
@issue.writers.delete(creator)
Do I need to specify the Delete SQL statement for the habtm
association? I haven''t seen sample code for it, so I''m
assuming I
specify the whole delete statement. Should all 3 fields in the join
table be primary keys?
Thanks for any insight anyone can provide on this matter...
--
rick
http://techno-weenie.net