我想使用CarrierWave gem在rails应用中保存上传图片的完整网址。我在创建操作之后更新条目,但它不起作用。但是,当我输入我的变量时,会显示完整的URL,但它只保存标识符...
Card控制器,after_action方法:
class CardsController < ApplicationController
before_action :set_card, only: [:show, :edit, :update, :destroy]
after_action :save_full_image_url, only: [:create, :update]
include Shortener
require 'carrierwave/orm/activerecord'
def save_full_image_url
c = @card
puts "URL: "+c.image_url.url
@card.update(image_url: c.image_url.url)
Rails.logger.info(@card.errors.inspect)
end
我的卡片型号:
class Card < ApplicationRecord
validates :cta_button_url, :format => URI::regexp(%w(http https)), presence: { message: '%{value} : please enter valid url' }
validates :title, :subtitle, :cta_button_text, :cta_button_url, :presence => true
mount_uploader :image_url, ImageUploader
has_one :short_url
end
我的完整日志:
SQL(0.3ms)INSERT INTO“cards”(“letter_id”,“title”,“subtitle”, “image_url”,“cta_button_text”,“cta_button_url”,“share_button”) VALUES(?,?,?,?,?,?,?)[[“letter_id”,49],[“title”, “fsddssd”],[“subtitle”,“fsdfsdfsd”],[“image_url”,“10298593.jpg”], [“cta_button_text”,“访问网站”],[“cta_button_url”, “http://www.testurl.com”],[“share_button”,“t”]](1.1ms)提交 事务(0.1ms)开始事务卡加载(0.2ms)SELECT “卡片”。* FROM“卡片”在哪里“卡片”。“id”=?限制? [[“id”,44], [“LIMIT”,1]] SQL(0.4ms)INSERT INTO“short_urls”(“card_id”, “token”,“created_at”,“updated_at”)VALUES(?,?,?,?)[[“card_id”, 44],[“token”,“PmK5vnuCU9Dczz995fz8Ddbf”],[“created_at”,“2017-08-08 21:08:57.625325“],[”updated_at“,”2017-08-08 21:08:57.625325“]]
(0.8ms)提交事务字母加载(0.2ms)SELECT“字母”。* FROM“letters”WHERE“letters”。“id”=?限制? [[“id”,49], [“LIMIT”,1]](0.1ms)开始事务CoreBot Load(0.2ms) 选择“core_bots”。* FROM“core_bots”WHERE“core_bots”。“id”=? 限制? [[“id”,1],[“LIMIT”,1]](0.1ms)提交事务 重定向到http://localhost:3000/dashboard/test网址: http://localhost:3000/uploads/card/image_url/44/10298593.jpg
(0.1ms)开始事务SQL(0.4ms)更新“卡”SET “image_url”=?在哪里“卡”。“id”=? [[ “IMAGE_URL”, “10298593.jpg”],[“id”,44]](2.5ms)提交事务“10298593.jpg”,cta_button_text:“访问网站”,cta_button_url: “http://www.testurl.com”,share_button:true&gt;,@ messages = {}, @details = {}&GT;完成302发现在60ms(ActiveRecord:7.2ms)
当我登录控制台“c.image_url.url”时,我获得了完整的URL(http://localhost:3000/uploads/card/image_url/44/10298593.jpg)但是当我更新我的条目时,它只保存了结尾(10298593.jpg)。
任何想法为什么我无法保存整个网址,即使我之前可以在变量中获取它?
答案 0 :(得分:0)
问题解决了!问题来自mount_uploader :image_url, ImageUploader
我创建了一个&#34; remote_image_url&#34;并使用完整的URL更新它。现在它有效!