I''m having a problem with belongs_to and has_and_belongs_to_many.
Here''s a brief summary of the models involved:
class Member < ActiveRecord::Base
set_primary_key ''member_id''
has_and_belongs_to_many :projects, :join_table =>
''projects__members''
has_many :projects, :foreign_key => ''created_by''
end
class Project < ActiveRecord::Base
set_primary_key ''project_id''
belongs_to :created_by, :class_name => ''Member'',
:foreign_key =>
''created_by''
has_and_belongs_to_many :members, :join_table =>
''projects__members''
end
And the DDL:
create table members (
member_id serial primary key
, email_address text not null unique
, is_active boolean not null default true
, is_admin boolean not null default false
, can_produce boolean not null default false
);
create table projects (
project_id serial primary key
, project_name text not null unique
, created_by integer not null
references members (member_id)
);
create table projects__members (
project_id integer not null
references projects(project_id)
, member_id integer not null
references members(member_id)
, is_producer boolean not null default false
, is_active boolean not null default true
, unique (project_id, member_id)
);
From looking at the SQL that gets called, a statement like
@member.projects.find(:all) appears to be doing something like
select projects.*
from members
join projects on (member_id = created_by).
Most of the time, I''d like it to make the join through the
projects__members table. However, that''s besides the point. How can I
specify how the join is made? Is there something obviously wrong with
my schema? I''ve been looking through AWDwR, googling, and searching
my mailing list archives, but I haven''t found a solution. (I''m
surprised I haven''t found anything and think I must have missed
something obvious, because I don''t think this is *that* obscure.)
Thanks for any advice and suggestions.
Michael Glaesemann
grzm myrealbox com
[1](http://www.loudthinking.com/arc/000229.html)