Модель обмена данными в рельсах с использованием http - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть приложение с двумя рельсами.Допустим, App1 и App2.App1 имеет модель, которая является ядром моего бизнеса, и App2 хотел использовать это.

Один из подходов, о котором я думал, был создать PORO, который имитирует функциональность ActiveRecord, но вместо взаимодействия с БД, он будет взаимодействовать с App1 через HTTP или https.

Например:

class User < NetworkRecord
  def self.find(id)
    new.find(id)
  end

  def find(id)
    endpoint = 'https:app1.com/user'
    get(endpoint, { id: id })
  end
end


class NetworkRecord
  def get(endpoint, params)
    Httparty.get(endpoint, params)
  end
end

Я не уверен, является ли этот подход слишком разумным или правильным, потому что мы даем некоторую функциональность ActiveModel объекту, не наследуя его.

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

1 Ответ

0 голосов
/ 13 ноября 2018

Такое ощущение, что вы думаете в том же ключе, что и ActiveResource , который предоставляет ActiveRecord-подобный интерфейс для объектов через интерфейс REST.

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

...