gpt4 book ai didi

ruby-on-rails - Carrierwave 上传适用于 Rails 控制台,但不适用于规范

转载 作者:数据小太阳 更新时间:2023-10-29 07:16:20 26 4
gpt4 key购买 nike

我有以下模型:

class Face < ActiveRecord::Base
attr_accessible :face_index, :design, :background
belongs_to :template
mount_uploader :background, BackgroundUploader
end

后台 uploader :

class BackgroundUploader < CarrierWave::Uploader::Base
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
end

当我启动 Rails 控制台时,我可以创建一个 Face 并为其保存背景:

f = Face.create(:face_index => 0)
f.background = File.open("/path/to/image.jpg")
f.save!

一切正常,但是当我尝试将其移动到 rspec 时,我遇到了失败:

Failures:

1) Face A new face
Failure/Error: @face.background = File.open(image_path)
NoMethodError:
undefined method `background_will_change!' for #<Face:0x007ff63d9f7410>

规范:

describe Face do

before(:each) do
image_path = Rails.root.join('spec/support/images', '02.jpg').to_s
@face = FactoryGirl.create(:face)
@face.background = File.open(image_path)
@face.save!
end

describe "A new face" do
it { should belong_to(:template) }
end

end

工厂:

FactoryGirl.define do    
factory :face do
face_index 0
end
end

我以前在数据库中缺少上传者列时看到过该错误,但是如果我的迁移对于开发是正确的,那么对于测试它们应该是正确的,不是吗?我是否需要在规范中要求某些内容才能使其正常工作?

谢谢!

最佳答案

哎呀,答案是我的最后一段,我忘记跑了

rake db:test:load

休息一下再回到问题上的一个很好的例子。

关于ruby-on-rails - Carrierwave 上传适用于 Rails 控制台,但不适用于规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10610944/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com