У меня здесь какая-то странная система, где разрабатываемое мной приложение имеет локальную базу данных, но также подключается к внешней базе данных для некоторых данных.
Одним из требований было то, что, если производитель не найден во внешней базе данных, у него должна быть временная запись, созданная в локальной базе данных, пока внешняя база данных не может быть обновлена (не под моим контролем, но обычно происходит в48 часов).
Итак, я создал таблицу temp_manufacturer, в которой содержались бы детали, пока производитель не был добавлен во внешнюю базу данных.
Это прекрасно работает, за исключением того, что продукты принадлежат производителям, и я не могу добавить продукт, пока производитель не окажется во внешней базе данных.В моей модели продуктов у меня есть
class Product < ActiveRecord::Base
validates_uniqueness_of :sku
validates_presence_of :manufacturer
has_many :categories
belongs_to :manufacturer
end
Конечно, проблема здесь в том, что, хотя я передаю идентификатор_производителя, идентификатор_производителя отсутствует в таблице производителей во внешней базе данных.
То, что я надеялся сделать, было что-то вроде
validates_presence_of :manufacturer || :temp_manufacturer
belongs_to :manufacturer || :temp_manufacturer
, но не похоже, что это возможно.
Есть ли другой способ «подделать»Отношения «родитель-потомок», как это?
К сожалению, я не могу обновить таблицу производителей из своего приложения, хотя я могу получить идентификатор, который будет использоваться для нового производителя.