2016-11-29 8 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

関連する問題