Ruby on rails Ruby TMDB API将电影保存到数据库

Ruby on rails Ruby TMDB API将电影保存到数据库,ruby-on-rails,ruby,command-line-interface,rails-console,themoviedb-api,Ruby On Rails,Ruby,Command Line Interface,Rails Console,Themoviedb Api,我正在使用ruby tmdb gem从tmdb查找电影。 我已经设置了API密钥,我知道如何在rails控制台中查找电影 假设我在rails控制台中运行这个@movies=TmdbMovie.find(:title=>“社交网络”) 这将返回关于上述电影《社交网络》的全部信息 我需要知道的是,如何将返回的电影信息保存到数据库中,并根据返回的信息创建新电影 假设它运行@movies=TmdbMovie.find(:title=>“社交网络”),控制台将返回此 如果我想从返回的信息中保存我的数据库的

我正在使用ruby tmdb gem从tmdb查找电影。 我已经设置了API密钥,我知道如何在rails控制台中查找电影

假设我在rails控制台中运行这个
@movies=TmdbMovie.find(:title=>“社交网络”)
这将返回关于上述电影《社交网络》的全部信息

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

假设它运行
@movies=TmdbMovie.find(:title=>“社交网络”)
,控制台将返回此


如果我想从返回的信息中保存我的数据库的描述、拖车和标题,如果您已经设置了包含此数据的模型,您可以执行以下操作:

@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
的DB表),它将是
Movie

如果尚未设置
ActiveRecord
模型,则可以轻松生成一个:
rails g model YourMovie description拖车电影

如果您真的不需要将电影存储在本地数据库中,并且只想防止不断命中API服务,则可以使用Rails低级缓存:

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

我不确定你是否合法地被允许将tmdb数据保存到你自己的数据库中。你需要点击他们的api来获取电影信息或不时地缓存它。 您不应该将其保存到数据库中。。。。
kardeiz提供的解决方案是可行的……

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