Ruby TMDB API Сохранить фильм в базе данных

Я использую гем ruby ​​tmdb, чтобы найти фильмы из TMDB. У меня настроен ключ API, и я знаю, как найти фильм в консоли rails

Скажи, что я запускаю это @movies = TmdbMovie.find(:title => 'The Social Network') в rails consoleЭто возвращает целую кучу информации о вышеупомянутом фильме, Социальная сеть.

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

Так сказать беги @movies = TmdbMovie.find(:title => 'The Social Network') и консоль возвращает это представление Gist на Github

Что делать, если я хочу сохранить из этой возвращенной информации только описание, трейлер и название моей базы данных?

2 ответа

Предполагая, что у вас есть модель, настроенная для хранения этих данных, вы можете сделать:

@movies.each do |movie|
  # assumes @movies is an array
  # inside this loop, "movie" refers to the current TMDB movie object
  YourMovie.where({
    description: movie.description,
    trailer: movie.trailer,
    title: movie.title
  }).first_or_create
end

YourMovie это просто ссылка на то, что вы хотите назвать моделью своего фильма; в вашем случае (с таблицей БД под названием movies) это было бы Movie,

Если у вас еще нет ActiveRecord модель, вы можете легко создать: rails g model YourMovie description trailer movie,

Если вам на самом деле не нужно хранить фильм в локальной базе данных, и вы просто хотите предотвратить постоянное использование сервиса API, вы можете использовать низкоуровневое кэширование Rails:

Rails.cache.fetch('The Social Network', expires_in: 24.hours) do
  @movies = TmdbMovie.find(:title => 'The Social Network')
end

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

Другие вопросы по тегам