ActiveRecord принадлежит с оператором «или» - PullRequest
1 голос
/ 24 октября 2011

У меня здесь какая-то странная система, где разрабатываемое мной приложение имеет локальную базу данных, но также подключается к внешней базе данных для некоторых данных.

Одним из требований было то, что, если производитель не найден во внешней базе данных, у него должна быть временная запись, созданная в локальной базе данных, пока внешняя база данных не может быть обновлена ​​(не под моим контролем, но обычно происходит в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

, но не похоже, что это возможно.

Есть ли другой способ «подделать»Отношения «родитель-потомок», как это?

К сожалению, я не могу обновить таблицу производителей из своего приложения, хотя я могу получить идентификатор, который будет использоваться для нового производителя.

...