Извлечения информации с сервисов, как это работает?
Здравствуйте. Хочу сделать так, чтобы человек вводил в поле (в моем приложении) id книги с goodreads и после сохранения, создавать в моей бд книга с заголовком и информацией, типа сколько страниц. У goodreads есть gem https://github.com/sosedoff/goodreads
Хотелось бы узнать, в какую сторону копать, чтобы реализовать такое? Это ведь с помощью хелперов реализуется?
Нет, хелперы нужны только для упрощения верстки во вьюхах.
Подключаем гем, создаем минимальный сервис:
#app/services/goodreads_service.rb
class GoodreadsService
API_KEY = 'api-ключ' (или брать из ENV или использовать rails_config)
API_SECRET = 'секрет'
def initialize
Goodreads.new(api_key: API_KEY, api_secret: API_SECRET)
end
end
Потом в любом месте в контроллере или в моделе (предпочтительнее) мы можем вызвать GoodreadsService.new.book('31337') и получить книгу по id.
lavezzi1: пользователь вводит в форме id книги, отправляет запрос, контроллер получает id книги, вызывает book = GoodreadsService.new.book('id книги') потом что-то типа: Book.create(title: book[:title], author: book[:author]]) и создается книга в БД с данными из Goodreads. Но я не знаю, что возвращает метод book, это надо смотреть документацию гема.
Или можно сделать метод класса в Book:
def self.create_from_goodreads(id)
book = GoodreadsService.new.book('id книги') # ещё нужно ловить ошибку, если книга не найдена
create(title: book[:title], author: book[:author]])
end
и в контроллере просто вызывать Book.create_from_goodreads('id книги').
Второй способ предпочтительнее.