Rails包含验证失败

时间:2014-05-28 00:25:00

标签: ruby-on-rails validation activerecord rspec

我的模型包含两个表示start_timeend_time的整数列。这些时间由当天的分钟偏移量表示。

class Example < ActiveRecord::Base
    validates :start_time, inclusion: 0..1440
    validates :end_time,   inclusion: 0..1440
end

我也有工厂

FactoryGirl.define do
    factory :examples do
        start_time { Kernel.rand(1441) }
        end_time   { Kernel.rand(1441) }
    end
end

当我构建这个对象并检查它是否对RSpec有效时,我得到与之相关的错误 start_time和end_time不在列表中。检查对象的值表明它们在范围内正确。

我已尝试以下方法让它发挥作用。

inclusion: { in: 0..1440 }
inclusion: [0..1440].flatten

---编辑

在RSpec

let(:example_klass) { FactoryGirl.build(:example) }
expect(example_klass).to be_valid ##=> FAILS

在rails控制台

t = FactoryGirl.build(:example)
t.valid?
=> true

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

使用

FactoryGirl.define do
    sequence :start_time , (0..1441) do |n|
        n   
    end
    sequence :end_time   , (0..1441) do |n|
        n   
    end 
end

并在您的示例工厂中使用

FactoryGirl.define do
    factory :examples do
        start_time 
        end_time
    end
end

任何事情都参考文档:https://github.com/thoughtbot/factory_girl/wiki/Usage#sequences-and-associations

希望这有帮助