Использование Rails 3.2. У меня есть таблица, предоставленная поставщиком, которую я не могу изменить. State
имеет 2 внешних ключа. Ниже приведен упрощенный код:has_one ассоциация соответствует 2 внешним ключам
# shops.rb
class Shop < ActiveRecord::Base
self.primary_key = "shop_id"
has_one :state, foreign_key: "shop_id"
end
# states.rb
class State < ActiveRecord::Base
self.primary_key = ["shop_id", "country_id"] # when there are multiple parent keys
belongs_to :shops, foreign_key: "shop_id"
end
# shop record
shop_id country_id
====================
1 3
# state records
shop_id country_id
=====================
1 4
1 6
1 3
1 9
Вы заметите, у меня будет только один shop
запись с shop_id = 1
, но state
будет иметь несколько соответствующих записей. Как я могу быть уверен, что когда я запустил следующее, я вернул правильную запись?
a = Shop.find(1)
a.state # => #<State shop_id: 1, country_id: 3>
Но это 'has_one', я должен использовать' states' или изменить 'has_many'? – Victor
вам придется изменить его на 'has_many', глядя на ваш государственный стол, у вас явно есть несколько государственных записей для магазина. – rb512