Создание одной и той же модели из нескольких источников данных

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

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


person hadees    schedule 15.08.2010    source источник


Ответы (1)


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

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

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

person zetetic    schedule 16.08.2010