2011-04-30 2 views
0

내가 쓴 레이크 작업을 긁어 레일에서 작동하지 내가 갈퀴 DB를 실행find_or_create 방법은 아래와 같은 작업

namespace :db do 
    desc "load photo" 
    task :load_photo => :environment do 
    begin 
     model=Model.find_or_create_by_photo(:name => open("http://domain.com/jsx.jpg")) 
    end 
     puts "complete" 
    rescue Exception => e 
     puts e 
    end 
    end 
end 

: load_photo이 " **undefined method 'find_or_create_by_photo'** for #<Class:0x37079e8>" 날이 출력 기능을 도와주세요 오류가있어?

미리 감사드립니다.

+0

게시 할 수 있습니까? 'Model'을위한 코드? 'photo'는 속성 또는 연관입니까? – nfm

+1

모델 코드를 게시 할 수 있습니까? find_or_create_by_photo 메소드가 없을 수도 있습니다. – buruzaemon

답변

1

사진의 속성 인 경우 : 당신의 클립 케이스

Model.find_or_create_by_photo_id 7 

(라는 DB 컬럼 'photo_file_name'포함) :

Model.find_or_create_by_photo_file_name 'lala.png' 
사진 협회의 경우

Model.find_or_create_by_photo photo_name_string 

+0

친절한 답변을 주셔서 감사합니다. 위의 모델 코드보기를 언급했는데, 레일스 레이크 작업에서 find_or_create 메서드를 사용할 수 있습니까? – prabu

+0

> 레일스 레이크 작업에서 find_or_create 메소드를 사용할 수 있습니까? 예. – Nazar

+0

Mysql :: Error : 1 행의 'photo_file_name'열에 너무 긴 데이터가 있습니다. Model.find_or_create_by_photo_file_name (: photo_file_name => open ("http://domain.com/car.jpg")) – prabu

2

find_and_create_by 메소드는 동적으로 생성됩니다 (find_by 또는 create_by 메소드로). Model.find_or_create_by_column을 호출하면 Ruby는 NoMethodError를 발생시킵니다. 오류는 복구 블록 내에서 호출됩니다. 이 오류가 발생하면 레일스는 모델에서 메서드 이름과 일치하는 열을 찾습니다. 열이 발견되면 메서드가 동적으로 만들어집니다. 그러한 메소드가 없으면 오류가 다시 발생합니다.

실제로 사진이라는 열이 있는지 확인하십시오. 일반적으로 이것은 작동해야합니다.

0

내 모델 코드는 paperclip을 보석으로 사용하고 있습니다. 모델 속성은 photo_file_name, photo_content_type 및 photo_file_size입니다.

 class Model < ActiveRecord::Base 
      has_attached_file :photo, :styles => { :small => "150x150>", :thumb => "75x75>" } 
     end 
관련 문제