Я думаю, что ваше проектное решение будет в значительной степени зависеть от того, какие атрибуты должны быть сохранены . Из вашего описания звучит так, будто у вас есть модель с несколькими источниками данных, но в которой будут храниться одни и те же атрибуты независимо от источника. В этом случае STI кажется излишним. Когда вы извлекаете строку из таблицы, имеет ли значение, является ли источник API или скребком экрана? Если нет, то вы можете просто определить отдельные методы для каждого источника данных и использовать соответствующий метод в контроллере.
@instance = MyModel.new(:datasource=>"API")`
Я бы сказал, что не беспокойтесь о наследовании (или смешивании кода из модулей), если только вам это не нужно. Есть некоторые ошибки - STI не полностью поддерживается некоторыми гемами / плагинами, например.