У меня есть модель заказа с двумя ассоциациями assign_to, каждая из которых относится к другому подклассу моей модели учетной записи. После загрузки заказа из базы данных обе ассоциации указывают на одну и ту же модель, даже если внешние ключи верны.Rails: association_to ассоциация не возвращает правильный объект
class Account < AR::Base
end
class FooAccount < Account
end
class BarAccount < Account
end
class Order < AR::Base
belongs_to :account, :class_name => 'FooAccount',
:foreign_key => :account_id
belongs_to :different_account, :class_name => 'BarAccount',
:foreign_key => :different_account_id
end
Console делает что-то вроде этого:
o = Order.find(42)
=> #<Order id: 42, account_id: 11, different_account_id: 99>
a = Account.find(11)
=> #<FooAccount id: 11, type: "FooAccount">
d = Account.id(99)
=> #<BarAccount id: 99, type: "BarAccount">
o.account_id
=> 11
o.account
=> #<BarAccount id: 99, type: "BarAccount">
o.different_account_id
=> 99
o.different_account
=> #<BarAccount id: 99, type: "BarAccount">
внешнего ключа значения являются правильными, но объект, на который ссылается ассоциации нет! Что я делаю не так?
Я бы попытался указать 'foreign_key' и' class_name' для 'account' тоже. – wpp
У вас есть метод в 'Order', называемый' account', который переопределяет определение 'own_to'. Если вы удалите 'own_to: account', будет ли' order.account' указывать на 'BarAccount'? – AbM
@AbM - вот и все –