Legacy Join

Ryan wrote:

Hello,

I have 2 legacy tables I want to join:

DB TABLES
Transaction_Details
Accounts

I want to join Transaction_Detail.Account with Accounts.Account.

I also want to be able to select Transaction_Details based on a field in
the Accounts table. Is that possible? I'm thinking it should be.

I'd prefer to do it with Active Record, as opposed to find_by_sql.

I currently have:

MODELS
- transaction_detail.rb -
class Transaction_Detail < ActiveRecord::Base
  set_table_name "Transaction_Details"

  has_one :account
end

- account.rb -

class Account < ActiveRecord::Base
  set_table_name "Accounts"

  has_many :transaction_details
end

CONTROLLER
TransactionDetail.find(:all) ... not sure what to do about the
:conditions here

Two things. First you can override the default primary key for a model with self.primary_key in your model such as:

class Account < ActiveRecord::Base
   set_table_name "Accounts"
   set_primary_key "account"
# or
# self.primary_key = "account"

Second you can override the default column used for a join with :foreign_key such as:

class Account < ActiveRecord::Base
   set_table_name "Accounts"
   set_primary_key "account"
# or
# self.primary_key = "account"

   has_many :transaction_details, :foreign_key => "account"