首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails Rakefile validates_uniqueness_of

Rails Rakefile validates_uniqueness_of
EN

Stack Overflow用户
提问于 2013-07-28 14:04:41
回答 1查看 83关注 0票数 0

我正在使用rakefile从一个网站获取信息并将其保存到我的数据库中。

使用TMDB,这个代码@movie = TmdbMovie.browse(:order_by => "release", :order => "asc", :page => 1, :per_page => 2, :language => "en", :expand_results => true)浏览最古老的电影(:order_by => "release")并将它们保存到我的数据库中,但是由于我将非常频繁地运行这个rake,返回和保存的电影将是相同的。

每部电影都有一个tmdb_id,每部id都是独一无二的。

如何使rakefile检查返回的电影的tmdb_id是唯一的,如果已经有一个带有id的电影,跳过并保存下一个电影。

我在我的电影模型validates_uniqueness_of :tmdb_id中尝试过它,但是它在运行rake命令时会出错,而且它不会保存电影。

基本上,我如何通过rakefile验证tmdb_id的唯一性?

这是我的档案

代码语言:javascript
复制
namespace :db do 

task :pull_tmdb_data => :environment do 

Tmdb.api_key = "API KEY" 



Tmdb.default_language = "en" 

  @movie = TmdbMovie.browse(:order_by => "release", :order => "asc", :page => 1, :per_page => 2, :language => "en", :expand_results => true)



@movie.each do |movie| 

Movie.create(title: movie.name, description: movie.overview, release_date: movie.released, tmdb_id: movie.id) 

end 



end 

end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-28 14:08:39

在您的validates_uniqueness_of :tmdb_id模型中使用Movie是正确的。您没有显示如何将电影保存到数据库,但是当验证失败时,.save不会导致异常,而.save!会导致异常。关键是使用一个保存方法,它不会在验证失败时引发错误。

编辑--既然我理解了你真正想要做的事情,你就应该能够做这样的事情:

代码语言:javascript
复制
per_page = 100
number_of_movies = Movie.count
page = number_of_movies/per_page+1
@movies = TmdbMovie.browse(:order_by => "release", :order => "asc", :page => page, :per_page => per_page, :language => "en", :expand_results => true) browses the oldest movies (:order_by => "release")

所以如果你已经放了435部电影,它只会在下一次的电话里还回400-500部电影。我这样做是因为我不确定是否有offset选项,但是如果有,您可以通过Movie.count来抵消查询,这样会更好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17909010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档