0

나는 검색어에 따라 500px의 API에서 사진을 가져 와서 결과를 db에 저장하는 Rails 앱을 만들고 있습니다. 사진과 검색의 두 가지 모델이 있습니다. 생성 된 search_term의 ID를 가져 와서 각 사진에 저장해야하므로 둘 사이에 연관이 있습니다.생성 된 레코드에서 ID를 가져 와서 컨트롤러의 다른 레코드에 저장하십시오.

다음은 사진 모델입니다.

class Photo < ActiveRecord::Base 

    self.per_page = 12 
    validates :uniqueid, :presence => true, :uniqueness => true 
    validates :name, :presence => true 
    validates :times_viewed, :presence => true 
    validates :rating, :presence => true 
    validates :votes_count, :presence => true 
    validates :favorites_count, :presence => true 
    validates :image_url, :presence => true, :uniqueness => true 

    has_one :search 

end 

여기는 검색 모델입니다.

class Search < ActiveRecord::Base 

    validates :search_term, :presence => true 
    has_many :photos 

end 

은 내가 특정 용어를 검색 한 횟수를 추적 할 필요가있다, 그래서 내가 다시 때마다 결과의 같은 페이지를받지 못했습니다 보장 할 수 있습니다. 사진을 가져 오는에 대한

컨트롤러는 다음과 같습니다 : 내가 생성 된 검색어의 ID를 가져,이 save_photos 방법 내의 각 사진에 그 내용을 저장하기 만하면 무엇을 본질적으로

def index 
    @search = params[:search] 

    if @search 
    # I need to fetch the id of this search term 
    Search.create search_term: @search 
    @json_response = JSON.parse(get_access_token.get("/v1/photos/search?term=#{CGI.escape @search}&rpp=100&image_size=4&sort=times_viewed").body) 
    save_photos @json_response 
    end 

end 

.

def save_photos json_response 

    json_response['photos'].each do |photo| 
    Photo.create uniqueid: photo['id'], 
     name: photo['name'], 
     description: photo['description'], 
     times_viewed: photo['times_viewed'], 
     rating: photo['rating'], 
     votes_count: photo['votes_count'], 
     favorites_count: photo['favorites_count'], 
     image_url: photo['image_url'], 
     photo_taken: photo['created_at'], 
     category: photo['category'], 
     privacy: photo['privacy'], 
     comments_count: photo['comments_count'], 
     nsfw: photo['nsfw'], 
     # I’d like to save the id of the search term here 
     Search.create search_id: @search 
    end 

end 

사과이 중복 질문이나 눈에 띄게 간단한 경우 -이 문제와 검색 무엇을 알고로 막 다른 골목에 왔어요.

답변

1

생성 된 search_term의 id를 save_photos 메소드에 전달하지 않는 이유는 무엇입니까?

def index 
    @search = params[:search] 

    if @search 
    # I need to fetch the id of this search term 
    search = Search.create search_term: @search 
    @json_response = JSON.parse(get_access_token.get("/v1/photos/search?term=#{CGI.escape @search}&rpp=100&image_size=4&sort=times_viewed").body) 
    save_photos(@json_response, search.id) 
    end 

end 

def save_photos(json_response, search_id) 

    json_response['photos'].each do |photo| 
    Photo.create uniqueid: photo['id'], 
     name: photo['name'], 
     description: photo['description'], 
     times_viewed: photo['times_viewed'], 
     rating: photo['rating'], 
     votes_count: photo['votes_count'], 
     favorites_count: photo['favorites_count'], 
     image_url: photo['image_url'], 
     photo_taken: photo['created_at'], 
     category: photo['category'], 
     privacy: photo['privacy'], 
     comments_count: photo['comments_count'], 
     nsfw: photo['nsfw'], 
     # I’d like to save the id of the search term here 
     search_term_id: search_id 
    end 

end 
+0

완벽하게 속임수를 썼습니다. 감사합니다. – gosseti

관련 문제