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, это путь....