Я создаю сайт в Ruby on Rails, у меня есть две модели модели User
и модель Transaction
.Ruby on Rails - основной и внешний ключ
Эти модели оба принадлежат к счету, так что они оба имеют поле, называемое account_id
Я пытаюсь настроить связь между ними следующим образом:
class User < ActiveRecord::Base
belongs_to :account
has_many :transactions
end
class Transaction < ActiveRecord::Base
belongs_to :account
belongs_to :user
end
Я использую эти ассоциации следующим образом:
user = User.find(1)
transactions = user.transactions
на данный момент приложение пытается найти сделки с user_id
, вот SQL он генерирует:
Mysql::Error: Unknown column 'transactions.user_id' in 'where clause': SELECT * FROM `transactions` WHERE (`transactions`.user_id = 1)
Это неверно, так как я хотел бы, чтобы найти сделок через account_id
, я попытался установить ассоциации, как так:
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
Это почти достигает того, что я ищу, чтобы сделать и генерирует следующий SQL:
Mysql::Error: Unknown column 'transactions.user_id' in 'where clause': SELECT * FROM `transactions` WHERE (`transactions`.user_id = 104)
число 104
является правильным account_id
, но он по-прежнему пытается запросить таблицу транзакций для user_id
поле. Может кто-нибудь дать мне несколько советов о том, как я могу настроить ассоциации запросить таблицу транзакций для account_id
вместо user_id
в результате запроса SQL, как так:
SELECT * FROM `transactions` WHERE (`transactions`.account_id = 104)
Приветствий
Eef
Вы должны построить ответ правильно с правильной подсветкой синтаксиса и отступами. – RatDon