FactoryGirl给我一个错误

时间:2015-09-25 15:34:40

标签: ruby-on-rails factory-bot

我得到了这个模型:

FactoryGirl.define do
  factory :absence do
    user nil
    company nil
    from nil
    to nil
    date nil
    category 0
    hours "8.00"
    remarks "MyString"
  end
end

这也会产生:

@absence = create(:absence, user: @company.owner, from: "2015-09-10", to: "2015-09-10", hours: 4)

我设置from,to和date为nil,因为它是:from和to某个日期。

当我在我的规范中尝试这个时:

NoMethodError:
  undefined method `from=' for #<Absence:0x007f81f5494b88>

我收到此错误消息:

from nil

可能出现什么问题?

编辑: 当我删除

class Absence < ActiveRecord::Base
  belongs_to :user
  belongs_to :company
  enum type: {holiday: 0, sick: 1} 
  validates :from, presence: true, if: '!user_id.nil?'
  validates :to, presence: true, if: '!user_id.nil?'
  validates :date, presence: true, if: '!company_id.nil?'
  validates :hours, presence: true, if: '!user_id.nil?'
  validates :hours, :numericality => { :greater_than_or_equal_to => 0 }, if: '!user_id.nil?'
  validates :category, presence: true, if: '!user_id.nil?'
  validates_numericality_of :company_id, allow_nil: true
  validates_numericality_of :user_id, allow_nil: true
  validate :company_xor_user 
  validate :to_date_after_from_date
  validate :hours_smaller_than_workday
  validate :non_overlapping
  after_save :calculate_time_checks
  after_destroy :calculate_time_checks_delete

from factories / absences.rb我在下一个字段(to)上获取它,删除后我看到类别上的错误消息。

EDIT2: 型号:

{{1}}

DB: PSR-4 autoloading

1 个答案:

答案 0 :(得分:0)

最终找到了真正的原因。

首先,我使用名为“type”的属性创建了Absence模型。这被迁移到开发和测试数据库。之后我将其更改为类别并添加了“from”和“to”并进行了回滚并再次迁移(但未进行测试!)。

使用pry

require 'pry'; binding.pry

在测试中我做了Absence.columns并发现了差异。