好的,所以我在 Rails 4 中运行一个 Postgres 数据库,对于我的一个模型,提供属性:offer_status
应该默认为拒绝。这是我的迁移:
def change
create_table :offers do |t|
t.integer :offer_status, default: 0
t.timestamps null: false
end
此:offer_status
属性引用模型中的枚举,如下所示:
class Offer < ActiveRecord::Base
enum offer_status: [:declined, :accepted]
end
有了这两个,我编写了一个测试,将检查新创建的报价是否默认offer_status
为 0。
test "new offers should default to declined" do
@offer2=Offer.new()
assert @offer2.declined?
end
当我在测试中调用 byebug 控制台并输入@offer2 时,我得到了这个:
(byebug) o
<Offer id: nil, offer_status: nil, created_at: nil, updated_at: nil>
(byebug) exit
o=Offer.new()
但是,如果我在 rails 控制台中执行完全相同的调用,它会返回:
2.2.0 :001 > o=Offer.new
=> #<Offer id: nil, offer_status: 0, created_at: nil, updated_at: nil>
所以我的问题是,为什么它在控制台中工作但在我的测试中失败?