У меня есть класс Address, который мне нужно использовать в нескольких других моделях, а в некоторых моделях мне нужно использовать его для нескольких атрибутов.Настройка, которую я сделал до сих пор:
class User
has_one :pickup_address, class_name: 'Address', as: :location, dependent: :destroy
has_one :delivery_address, class_name: 'Address', as: :location, dependent: :destroy
end
class Address
belongs_to :location, polymorphic: true
end
Класс Address также будет использоваться позже в других моделях, например:
class ServiceProvider
has_one :address, as: :location
end
Проблема, с которой я столкнулся сейчас, связана с классом User, asон имеет несколько атрибутов, использующих одну и ту же полиморфную модель адреса.При построении модели она позволяет настроить адреса как доставки, так и доставки, но после сохранения, когда я пытаюсь извлечь ее из базы данных, оба поля имеют один и тот же (последний) объект адреса, который был предназначен для delivery_address.
Насколько я понимаю, это происходит потому, что модель сохраняет только один полиморфный идентификатор вместо нескольких.
Мой вопрос заключается в том, как правильно обрабатывать такие ассоциации?Я думаю, что это довольно распространенная проблема в веб-разработке?!