Ruby on rails 装载carrierwave上载程序时无法直接更改模型属性
我使用的是activeadmin,如果在目录中找到一张照片,下面的代码应该会将其分配给卡片 卡片模型不接受新照片,它从不分配新值,“保存”返回true 更新:问题是该属性上安装了carrierwave上载程序。注释出挂载使其工作,但它确实不是一个可接受的解决方案,因为这是一个必须重复执行的操作。。。是否有方法卸载上载程序或直接在装载上载程序的情况下设置属性值?我似乎在网上找不到任何东西 更新:偶数Ruby on rails 装载carrierwave上载程序时无法直接更改模型属性,ruby-on-rails,ruby-on-rails-4,carrierwave,Ruby On Rails,Ruby On Rails 4,Carrierwave,我使用的是activeadmin,如果在目录中找到一张照片,下面的代码应该会将其分配给卡片 卡片模型不接受新照片,它从不分配新值,“保存”返回true 更新:问题是该属性上安装了carrierwave上载程序。注释出挂载使其工作,但它确实不是一个可接受的解决方案,因为这是一个必须重复执行的操作。。。是否有方法卸载上载程序或直接在装载上载程序的情况下设置属性值?我似乎在网上找不到任何东西 更新:偶数ActiveRecord::Base.connection.execute(“更新卡设置照片=”#{
ActiveRecord::Base.connection.execute(“更新卡设置照片=”#{f.to_s}',其中id=#{card.id};”)
在安装carrierwave时失败。。。我想它已经永远被接管了
更新:原来我的问题是重复的
从日志中:
Card Load (0.5ms) SELECT `cards`.* FROM `cards` WHERE `cards`.`gatherer_id` = 244675 LIMIT 1
(0.2ms) BEGIN
Card Load (0.4ms) SELECT `cards`.* FROM `cards` WHERE `cards`.`id` = 1377 LIMIT 1
SQL (0.5ms) UPDATE `cards` SET `photo` = NULL, `updated_at` = '2013-11-22 11:20:44' WHERE `cards`.`id` = 1377
(4.1ms) COMMIT
在carrierwave未装入且该属性的值已完全更新之后,当carrierwave再次装入时,它通常会根据上载程序存储返回文件位置。唯一的问题是我无法在装载上载程序时设置该值。作为最后的手段,我将使用普通的老sql来实现它,我只是不太喜欢这个想法
activeadmin操作:
ActiveAdmin.register_page 'Import FTP photos' do
menu label: 'Import FTP photos', parent: 'Cards'
#action_item do
# link_to 'View Site', '/'
#end
content do
require 'fileutils'
para 'Importing photos...'
from_dir = 'var/uploads/card_photos'
uploads_dir = 'public/uploads/card/photo/'
Dir.foreach(from_dir) do |f|
next if f == '.' or f == '..'
from_file = from_dir + '/' + f.to_s
id = f.gsub(/\.\w+$/, '')
card = Card.find_by_gatherer_id(id)
if card
to_dir = uploads_dir+card.id.to_s
to_file = to_dir + '/' + f.to_s
Dir.mkdir(to_dir) if Dir.new(to_dir).nil?
FileUtils.remove(to_file) if FileTest.exists?(to_file)
FileUtils.mv(from_file, to_file)
card.photo = f.to_s
card.save
end
end
end
end
卡片模型
class Card < ActiveRecord::Base
mount_uploader :photo, PhotoUploader
belongs_to :card_set
belongs_to :card_artist
def to_s
caption
end
private
def card_params
params.permit!
end
end
class-Card
create或raise params.inspect上是否有日志或窥探的机会?我在描述中从日志中添加了一些信息,我不知道什么是窥探,我对rails真的很陌生。我对引用params的不好,这里没有任何东西通过params传递,这都是批处理