I have the following model:
class Face < ActiveRecord::Base
  attr_accessible :face_index, :design, :background
  belongs_to :template
  mount_uploader :background, BackgroundUploader
end
The BackgroundUploader:
class BackgroundUploader < CarrierWave::Uploader::Base
  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
end
When I launch the rails console I can create a Face and save a background to it:
f = Face.create(:face_index => 0)
f.background = File.open("/path/to/image.jpg")
f.save!
That all works, but when I try to move it to rspec I'm getting a failure:
Failures:
  1) Face A new face 
     Failure/Error: @face.background = File.open(image_path)
     NoMethodError:
       undefined method `background_will_change!' for #<Face:0x007ff63d9f7410>
The spec:
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
The factory:
FactoryGirl.define do    
  factory :face do
    face_index 0
  end
end
I've seen that error before when uploader column was missing from the db, but if my migrations are correct for dev they should be correct for test, non? Do I need to require something in the spec to make it work?
thanks!
Doh, the answer was my final paragraph, I forgot to run
rake db:test:load
A good example of taking a break and coming back to a problem.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With