I am trying to setup a has_many :through relationship between two models User and CustomerAccount through another join model AccountOwnership (the underlying tables which BELONG to two DIFFERENT DATABASES).
Here is the relevant code
I am trying to setup a has_many :through relationship between two models User and CustomerAccount through another join model AccountOwnership (the underlying tables which BELONG to two DIFFERENT DATABASES).
Here is the relevant code
Solution:
Seems that this cannot be achieved through any Rails association magic, since this is a core limitation of any database access mechanism including raw SQL.
Here is what I did to workaround the issue:
class User < ActiveRecord::Base has_many :account_ownerships, :dependent => :destroy
def companies (account_ownerships.collect { |r| Reporting::CustomerAccount.find(r.company_id) }).flatten end end
This provides a correct approximation as shown:
a = AcccountOwnership.create!(:user_id => 10, :company_id => 10) u = User.find(10) u.account_ownerships ### will return the correct account_ownership instance
ALSO
u.companies ### will return a list of all companies enlisted for each account
And we need to add two instance methods to the account_ownership model, to approximate the association behavior
class CustomerAccount < ActiveRecord::Base set_table_name "customers"