私は、識別子だけでなく、データベースに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が保存されていることを確認する別の方法はありますか?
ありがとうございました!
ありがとうございました。機能の背後にある理由をデータベースの観点から理解していますが、私はすべてのやりとりに対してCarrierwaveに頼ることなく、将来他のソリューションを使用する柔軟性と自由度を維持し、データベースと直接やりとりすることを望んでいます。必要に応じてデータをインポート/エクスポートします。あなたはこの問題の解決策を持っていますか?事前にありがとう – user4889724
十分な公正。私はここでは具体的なことにあまり慣れていません(搬送波の広範な問題よりも霧自体に慣れています)。私は、あなたはおそらくのような何かができると思う: '' ' before_save行う self.full_url = self.url エンド ' '' そして確実full_url(そしておそらく列としてのURLを定義された列作成されるだろう十分である、私はどちらもレールを使いません)。とにかく、保存時にメソッドからカラムの値を設定すると、おそらくあなたが望むものが得られるでしょう。 – geemus