ruby – 工厂女孩的奇怪问题

ruby – 工厂女孩的奇怪问题,第1张

概述我有一个模特 # == Schema Information## Table name: posts## id :integer not null, primary key# name :string(255)# title :string(255)# content :text# 我有一个模特

# == Schema information## table name: posts##  ID             :integer         not null,primary key#  name           :string(255)#  Title          :string(255)#  content        :text#  created_at     :datetime#  updated_at     :datetime#  abstract       :text#  category_ID    :integer#  finalversion   :boolean         default(FALSE)#  published_date :date#class Post < ActiveRecord::Base  has_many :Tags  belongs_to :category  valIDates :published_date,:presence => true  default_scope :order => 'created_at DESC'  accepts_nested_attributes_for :Tags,:allow_destroy => :true,:reject_if => proc { |attrs| attrs.all? { |k,v| v.blank? } }  def prev_post    self.class.first(:conditions => ["ID < ?",ID],:order => "ID desc")  end  def next_post    self.class.first(:conditions => ["ID > ?",:order => "ID asc")  end  def SEO_Title    Title.gsub(/\s+/,'_')  endend

和一个工厂

FactoryGirl.define do  factory :post do    published_date Date.today    association :category,:factory => :category    Title Forgery::LoremIpsum.words    name Forgery::LoremIpsum.word    content Forgery::LoremIpsum.words(100,:random => 250)    abstract Forgery::LoremIpsum.words(100,:random => 50)    finalversion true  endend

在rails控制台中,我没有问题

FactoryGirl.create :post

获取有效对象并能够访问* published_date *属性.但是在我的规格中

require 'spec_helper'(1..5).map do |i|  Title        = "a Title\t#{i}"  escape_Title = "a_Title_#{i}"  perma_link = "/posts/#{i}/Title/#{escape_Title}"  describe "A post with Title '#{Title}'" do    before do      @post = FactoryGirl.create :post,:ID=>i,:Title => Title      visit '/posts'    end    it "should appear in all links with permalink #{perma_link}" do      within "section.post_#{@post.ID}" do        page.should have_xpath(%Q%.//h1/a[@href="#{perma_link}"]%)        within "div.teaser" do          page.should have_xpath(%Q%.//a[@href="#{perma_link}"]%)        end      end    end  endend

我得到了回溯错误

5) A post with Title 'a Title 5' should appear in all links with permalink /posts/5/Title/a_Title_5     Failure/Error: @post = FactoryGirl.create :post,:Title => Title     NoMethodError:       undefined method `published_date=' for #<Post:0x000001047266b8>     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/activemodel-3.0.5/lib/active_model/attribute_methods.rb:364:in `method_missing'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/activerecord-3.0.5/lib/active_record/attribute_methods.rb:46:in `method_missing'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/bundler/gems/factory_girl-4f5f5df39a1b/lib/factory_girl/proxy/build.rb:13:in `set'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/bundler/gems/factory_girl-4f5f5df39a1b/lib/factory_girl/attribute/static.rb:12:in `add_to'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/bundler/gems/factory_girl-4f5f5df39a1b/lib/factory_girl/factory.rb:93:in `block in run'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/bundler/gems/factory_girl-4f5f5df39a1b/lib/factory_girl/factory.rb:91:in `each'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/bundler/gems/factory_girl-4f5f5df39a1b/lib/factory_girl/factory.rb:91:in `run'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/bundler/gems/factory_girl-4f5f5df39a1b/lib/factory_girl/Syntax/methods.rb:54:in `create'     # ./spec/integration/posts_permalinks_spec.rb:12:in `block (3 levels) in <top (required)>'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/hooks.rb:29:in `instance_eval'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/hooks.rb:29:in `run_in'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/hooks.rb:64:in `block in run_all'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/hooks.rb:64:in `each'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/hooks.rb:64:in `run_all'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/hooks.rb:110:in `run_hook'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/example_group.rb:191:in `block in eval_before_eachs'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/example_group.rb:191:in `each'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/example_group.rb:191:in `eval_before_eachs'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/example.rb:144:in `run_before_each'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/example.rb:48:in `block (2 levels) in run'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/example.rb:106:in `with_around_hooks'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/example.rb:46:in `block in run'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/example.rb:99:in `block in with_pending_capture'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/example.rb:98:in `catch'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/example.rb:98:in `with_pending_capture'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/example.rb:45:in `run'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/example_group.rb:262:in `block in run_examples'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/example_group.rb:258:in `map'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/example_group.rb:258:in `run_examples'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/example_group.rb:232:in `run'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/command_line.rb:27:in `block (2 levels) in run'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/command_line.rb:27:in `map'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/command_line.rb:27:in `block in run'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/reporter.rb:12:in `report'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/command_line.rb:24:in `run'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/runner.rb:55:in `run_in_process'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/runner.rb:46:in `run'     # /Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@ingd/gems/rspec-core-2.5.1/lib/rspec/core/runner.rb:10:in `block in autorun'

我完全被它难住了.有任何想法吗

布拉德

解决方法 你有没有运行rake db:test:prepare?它看起来像你的Post模型已发布_date,但你的工厂说它不存在.不运行此rake任务将是导致此问题的主要因素. 总结

以上是内存溢出为你收集整理的ruby – 工厂女孩的奇怪问题全部内容,希望文章能够帮你解决ruby – 工厂女孩的奇怪问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1282445.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存