【问题标题】:Ruby TMDB API Save a Movie to databaseRuby TMDB API 将电影保存到数据库
【发布时间】:2013-07-04 22:22:00
【问题描述】:

我正在使用 ruby​​ tmdb gem 从 TMDB 中查找电影。 我设置了 API 密钥,并且知道如何在 Rails 控制台中查找电影

假设我在rails console 中运行这个@movies = TmdbMovie.find(:title => 'The Social Network') 这会返回有关上述电影社交网络的大量信息。

我需要知道的是如何将返回的电影信息保存到我的数据库中,并可能根据返回的信息创建一部新电影。

所以说它运行@movies = TmdbMovie.find(:title => 'The Social Network'),控制台返回这个View Gist on Github

如果我想从返回的信息中保存描述、预告片和标题到我的数据库怎么办

【问题讨论】:

    标签: ruby-on-rails ruby command-line-interface rails-console themoviedb-api


    【解决方案1】:

    假设您设置了一个模型来包含这些数据,您可以这样做:

    @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
    

    【讨论】:

    • 如果我已经有一个电影表,有一个模型?你的电影是什么?因为您的代码中有moviesyourmovie。第一段代码会去哪里?最后一段代码会去哪里?如果我需要添加和保存多部不同标题的电影怎么办
    • 我更新了我的答案以回答您的前几个问题。您在哪里运行此代码取决于您要执行的操作?您是想自己将项目加载到数据库中,还是只想在用户搜索标题时(即在控制器中)加载它们。如果您愿意,可以从 Rails console 运行这两段代码。
    • 我希望将其保存在我的数据库中
    • 那么我将使用哪个代码以及如何将其保存到我的数据库中?
    • 第一个代码块;如果您设置正确,该块会将@movies 中的所有电影保存到您的数据库中。
    【解决方案2】:

    我不确定是否合法允许您将 tmdb 数据保存到您自己的数据库中。您需要不时访问他们的 api 来获取电影信息或缓存它。 你不应该把它保存到你的数据库中...... kardeiz提供的解决方案是要走的路......

    【讨论】:

      猜你喜欢
      • 2015-02-17
      • 2016-07-01
      • 1970-01-01
      • 2020-01-15
      • 2020-06-09
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多