Has_and_belongs_to_many on different databases

Hi, I’m working with two models that have a “has_and_belongs_to_many”
relation. Both models reside on a database that it is not the default
one.

A < External
has_and_belongs_to_many: B

B < External
has_and_belongs_to_many: A

Retriving the information for A works perfectly, but when trying to
“create” an element on A:

“A.B.create(…)”

ActiveRecord tries to create it on the default database. The solution
was doing:

b = B.find(…)
A.B << b

But, looking on the sourcecode I’ve found on the ActiveRecord file
“has_and_belongs_to_many_association.rb [25:29]”

  def has_primary_key?
    return @has_primary_key unless @has_primary_key.nil?
    @has_primary_key =

(ActiveRecord::Base.connection.supports_primary_key? &&
ActiveRecord::Base.connection.primary_key(@reflection.options
[:join_table]))
end

Shouln’t it be something like?

  def has_primary_key?
    return @has_primary_key unless @has_primary_key.nil?
    @has_primary_key = (@owner.connection.supports_primary_key? &&
      @owner.connection.primary_key(@reflection.options

[:join_table]))
end

Thank you

On Oct 16, 10:29 am, erzapito [email protected] wrote:

Hi, I’m working with two models that have a “has_and_belongs_to_many”
relation. Both models reside on a database that it is not the default
one.

Have you tried using has many through ? with has many through the join
table is also a rails model, so you have a place to say that the join
table should be in this other database.

Fred

On Fri, Oct 16, 2009 at 12:31 PM, Frederick C. <
[email protected]> wrote:

Have you tried using has many through ? with has many through the join
table is also a rails model, so you have a place to say that the join
table should be in this other database.

I tried it, but doing some tests I found that it allowed to have more
than
one relation between two elements, a new problem that I don’t know how
to
solve.

The real problem was with the library file, deleting elements also fails
because it tries to use the base connection instead of the ancestor’s
one.


[email protected] @ google talk :smiley:

Alexandre Paz Mena wrote:

On Fri, Oct 16, 2009 at 12:31 PM, Frederick C. <
[email protected]> wrote:

Have you tried using has many through ? with has many through the join
table is also a rails model, so you have a place to say that the join
table should be in this other database.

I tried it, but doing some tests I found that it allowed to have more
than
one relation between two elements, a new problem that I don’t know how
to
solve.

validates_uniqueness_of and a unique index in the DB. Done.

Best,

Marnen Laibow-Koser
http://www.marnen.org
[email protected]