0

rakefile을 사용하여 한 웹 사이트에서 정보를 가져와 내 데이터베이스에 저장하고 있습니다.Ruby on Rails - Rakefile validates_uniqueness_of

TMDB-Gem을 사용하면이 코드 @movie = TmdbMovie.browse(:order_by => "release", :order => "asc", :page => 1, :per_page => 2, :language => "en", :expand_results => true)에서 가장 오래된 영화 (:order_by => "release")를 찾아 내 데이터베이스에 저장하지만이 갈퀴를 자주 실행하므로 반환 된 영화는 동일하게됩니다.

는 모든 영화는 tmdb_id을 가지고 있으며, 모든 id는 고유

내가 반환 된 영화의 tmdb_id 고유이라는 rakefile 확인을하고, 이미 해당 ID와 영화가있는 경우, 건너 뛰고 다음 영화를 저장할 수있는 방법

.

내 영화 모델 validates_uniqueness_of :tmdb_id에서 시도했지만 rake 명령을 실행할 때 오류가 발생하고 동영상을 저장하지 않습니다. 내가의 rakefile 통해 tmdb_id

의 고유성을이 내 레이크 파일

당신은 바로 Movie 모델에서 validates_uniqueness_of :tmdb_id를 사용하는 것
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 

답변

1

되는 검증 할 수있는 방법

기본적으로

. 영화를 데이터베이스에 저장하는 방법을 보여주지 않았지만 .save은 유효성 검사가 실패 할 때 예외를 발생시키지 않는 반면 .save!은 예외입니다. 열쇠는 유효성 검사가 실패 할 때 오류를 발생시키지 않는 save 메소드를 사용하는 것입니다. -

편집 지금은 당신이 실제로 뭘 하려는지 이해, 당신은 같은 것을 할 수 있어야한다 : 당신은 이미 435 영화를 뽑아했습니다 그렇다면

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") 

을 만 돌아갑니다 다음 호출에서 400-500 영화. offset 옵션이 있는지 확실하지 않았기 때문에이 방법을 사용했습니다. 그렇다면 Movie.count으로 쿼리를 상쇄 할 수 있습니다.

+0

질문에 내 레이크 파일을 추가했습니다. 'validates_uniqueness_of : tmdb_id'를 사용하면 rake 명령이 반환 된 무비를 저장하지 못하게됩니다. 반면'validates_uniqueness_of : tmdb_id'를 제거하면 저장됩니다. – PMP

+0

'create'가 예외를 발생시키지 않아야합니다. 오류를 표시 할 수 있습니까? –

+0

오류를 반환하지 않습니다. 무슨 일이 일어날 지, 모델에 유효성 검사를하지 않으면 ... heroku로 밀고 rake 명령을 실행하면 반환 된 동영상이 내 데이터베이스에 저장됩니다. 하지만 validates_uni를 내 모델에 추가 한 다음 heroku로 밀고 rake 명령을 실행하면 리턴 된 동영상을 내 데이터베이스에 저장하지 마십시오 – PMP