Создание одной модели из нескольких источников данных - PullRequest
0 голосов
/ 15 августа 2010

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

Моя проблема заключается в том, как лучше абстрагировать эти различные источники данных.Прямо сейчас я создаю классы lib, которые возвращают тот же хеш, который я затем использую для установки атрибутов модели.Но мне интересно, если это не больше случай использования STI.Или, если есть какой-то другой способ сделать это, я просто не думаю.

1 Ответ

0 голосов
/ 16 августа 2010

Я думаю, что ваше проектное решение будет в значительной степени зависеть от того, какие атрибуты должны быть сохранены . Из вашего описания звучит так, будто у вас есть модель с несколькими источниками данных, но в которой будут храниться одни и те же атрибуты независимо от источника. В этом случае STI кажется излишним. Когда вы извлекаете строку из таблицы, имеет ли значение, является ли источник API или скребком экрана? Если нет, то вы можете просто определить отдельные методы для каждого источника данных и использовать соответствующий метод в контроллере.

@instance = MyModel.new(:datasource=>"API")`

Я бы сказал, что не беспокойтесь о наследовании (или смешивании кода из модулей), если только вам это не нужно. Есть некоторые ошибки - STI не полностью поддерживается некоторыми гемами / плагинами, например.

...