Hi,

I'm having problems working out how to specify the name of the join
table in a (non-) anonymous many-to-many relationship in an
unchangeable legacy database.

In SQL terms, I have three tables foo, bar and foo_bar (foo_bar being
the join table, and that only having foo_id and bar_id columns).  All
table names are singular.

I have made several attempts to model the relationship, the closest I
can get it is with this:

class Foo
  include DataMapper::Resource

  storage_names[:default] = 'foo'

  property :id, Serial
  property :a_column, String

  has n, :bars, :through => Resource
end

class Bar
  include DataMapper::Resource

  storage_names[:default] = 'bar'

  property :id, Serial
  property :a_column, String

  has n, :foos, :through => Resource
end

Except the join table's name comes out as "bar_foos".  Close!

I tried using "has n, :foos, :through => :foo_bars" and having the
foo_bars class as:

class FooBar
  include DataMapper::Resource

  storage_names[:default] = 'foo_bar'

  belongs_to :foo
  belongs_to :bar
end

But I'm told there's no key defined.  Adding ":key => true" to both of
them doesn't work.

I looked through dm-core/associations/many_to_many.rb but there
doesn't seem to be a way to name it through options, and my Ruby isn't
good enough to discern how it does its magic! ;o)

Is it possible?  How can I set the join table's name?

Cheers,
-Carl

--

You received this message because you are subscribed to the Google Groups 
"DataMapper" group.
To post to this group, send email to datamap...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/datamapper?hl=.


Reply via email to