我有一個問題讓我的rspec控制器測試通過attr_accessible在Rspec中......但不是從控制檯。Rspec&Paperclip:破壞與attr_accessible?
post :create, :banner => valid_attributes
失敗,但
Banner.create!(valid_attributes) is accepted.
如果我拿出attr_accessible從橫幅的模型,或者我拿出validates_attachment_presence:bannerimage,它的工作原理。嘗試添加bannerimage_attributes和四個回形針生成的:bannerimage列到我的attr_accessible - 沒有喜悅。試圖拿出其他回形針驗證(內容類型,大小) - 仍然沒有喜悅。任何建議非常讚賞 - 我完全無所適從。
相關的代碼是在這裏:
RSPEC測試的相關位:
def valid_attributes
demo_image = File.open(File.join(Rails.root, "spec", "samples", "laptop1.jpg"))
{
:name => 'Test Spec Banner',
:bannerimage => demo_image
}
end
describe "POST create" do
describe "with valid params" do
it "creates a new Banner" do
expect {
post :create, :banner => valid_attributes
}.to change(Banner, :count).by(1)
end
end
型號:
class Banner < ActiveRecord::Base
attr_accessible :name, :url, :bannerimage
has_attached_file :bannerimage, :styles => { :full => "960x", :thumb => "100x" }
validates_attachment_content_type :bannerimage, :content_type => [ 'image/jpg', 'image/jpeg', 'image/gif', 'image/png'], :message => 'file must be a gif, jpeg or png image'
validates_attachment_size :bannerimage, :less_than => 3.megabytes
validates_presence_of :name
validates_attachment_presence :bannerimage
validates_uniqueness_of :name
has_many :pages, :dependent => :nullify
def to_s
name
end
end
編輯: 橫幅可以通過網站進行創建。
下面的相關控制器代碼。沒有電話之前/之後,只是一個標準的寧靜創造。
def create
@banner = Banner.new(params[:banner])
if @banner.save
redirect_to admin_banner_url(@banner), notice: 'Banner was successfully created.'
else
render action: "new"
end
end
你還沒有發佈你的控制器代碼。你發佈的規範是通過這個,所以問題可能在那裏。您還沒有說過是否可以通過Web界面的標準表單創建橫幅。 –
上面都添加了 – PlankTon