Ruby on Rails - Primary and Foreign key

Posted by Eef on Stack Overflow See other posts from Stack Overflow or by Eef
Published on 2010-05-10T10:26:42Z Indexed on 2010/05/10 10:34 UTC
Read the original article Hit count: 299

Hey,

I am creating a site in Ruby on Rails, I have two models a User model and a Transaction model.

These models both belong to an account so they both have a field called account_id

I am trying to setup a association between them like so:

class User < ActiveRecord::Base
  belongs_to :account
  has_many :transactions
end

class Transaction < ActiveRecord::Base
  belongs_to :account
  belongs_to :user
end

I am using these associations like so:

user = User.find(1)
transactions = user.transactions

At the moment the application is trying to find the transactions with the user_id, here is the SQL it generates:

Mysql::Error: Unknown column 'transactions.user_id' in 'where clause': SELECT * FROM `transactions` WHERE (`transactions`.user_id = 1)

This is incorrect as I would like the find the transactions via the account_id, I have tried setting the associations like so:

class User < ActiveRecord::Base
  belongs_to :account
  has_many :transactions, :primary_key => :account_id, :class_name => "Transaction"
end

class Transaction < ActiveRecord::Base
  belongs_to :account
  belongs_to :user, :foreign_key => :account_id, :class_name => "User"
end

This almost achieves what I am looking to do and generates the following SQL:

Mysql::Error: Unknown column 'transactions.user_id' in 'where clause': SELECT * FROM `transactions` WHERE (`transactions`.user_id = 104)

The number 104 is the correct account_id but it is still trying to query the transaction table for a user_id field. Could someone give me some advice on how I setup the associations to query the transaction table for the account_id instead of the user_id resulting in a SQL query like so:

SELECT * FROM `transactions` WHERE (`transactions`.account_id = 104)

Cheers

Eef

© Stack Overflow or respective owner

Related posts about ruby-on-rails

Related posts about activerecord