2016-11-29 4 views
1

식별자가 아니라 데이터베이스에 carrierwave로 업로드 한 이미지의 전체 URL을 저장하려고합니다. 저장하기 전에 이미지 URL을 사용할 수 있지만 저장시 식별자 만 데이터베이스에 나타납니다. 나는 호스트와 엔드 포인트를 asset_host뿐 아니라 Carrierwave.rb 구성으로 설정했습니다. 아래를 참조하십시오 :Carrierwave + Fog + S3 + Rails 데이터베이스의 전체 URL을 저장할 수 없습니다.

CarrierWave.configure do |config| 
    config.fog_provider = 'fog/aws'      # required 
    config.fog_credentials = { 
    provider:    'AWS',      # required 
    aws_access_key_id:  'xxx',      # required 
    aws_secret_access_key: 'yyy',      # required 
    region:    'eu-west-1',     # optional, defaults to 'us-east-1' 
    host:     's3.example.com',    # optional, defaults to nil 
    endpoint:    'https://s3.example.com:8080' # optional, defaults to nil 
    } 
    config.fog_directory = 'name_of_directory'       # required 
    config.fog_public  = true          # optional, defaults to true 
config.asset_host = "https://s3.example.com:8080/name_of_directory" 
end 

이 경우 asset_host가 많이 수행되지 않는 것 같습니다. 전체 URL이 저장되는지 확인하는 다른 방법이 있습니까?

감사합니다.

답변

0

모든 전체 URL을 저장하면 많은 중복이 발생할 수 있습니다 (호스트가 모두 동일하므로). 따라서 여기서는 접근 방식이 다른 부분을 저장하고 알려진 호스트 및 저장된 식별자에서 URL을 작성하는 것입니다. 따라서 파일을로드 할 때 carrierwave 인터페이스를 사용하여 url을 쉽게 찾을 수 있어야합니다 (제공되는 경우 asset_host를 존중해야합니다).

여기에 전체 URL을 저장해야하는 특별한 이유가 있습니까?

+0

정보를 제공해 주셔서 감사합니다. 기능에 대한 추론을 이해하고 있지만 데이터베이스 관점에서 모든 상호 작용에 대해 Carrierwave에 의존하고 미래에 다른 솔루션을 사용할 수있는 유연성과 자유를 유지하고 데이터베이스와 직접 상호 작용하거나 필요에 따라 데이터 가져 오기/내보내기. 이 문제에 대한 해결책이 있습니까? 사전에 감사합니다 – user4889724

+0

충분히 공정하게. 나는 여기서 구체적인 내용에 익숙하지 않다. (안개 자체에 대한 더 넓은 이슈보다는 캐리어 웨이브에 더 익숙하다.) 나는 당신이 아마 뭔가를 할 수 있다고 생각 : ''' before_save 할 self.full_url = self.url 끝 ''' 그리고 확인 full_url (그리고 아마도 열로 URL을 정의 된 열을 만드는 것 충분히, 나는 레일을 많이 사용하지 않는다). 어쨌든 저장 시간에 메서드에서 열 값을 설정하면 아마도 원하는 것을 얻을 수 있다고 생각합니다. – geemus