变量不会在创建时采用默认值:结果是"不能为空白"错误

时间:2015-08-01 19:04:29

标签: ruby-on-rails ruby ruby-on-rails-4

我的迁移文件包含:

t.belongs_to :user,      index: true
t.belongs_to :organization, index: true
t.boolean :member,       default: false, null: false
t.boolean :admin,        default: false, null: false
t.boolean :moderator,    default: false, null: false

模型文件包括:

validates :member, presence: true
validates :admin, presence: true
validates :moderator, presence: true

在我的种子文件中create新记录:

user.relationships.create!(organization_id: 2, member: true, moderator: true)

这失败并显示错误Admin can't be blank,如果我将admin: false添加到种子行,则错误消失了。但是我希望当我没有指定admin的值时,它将从迁移文件中获取其默认值。为什么它的行为与我的期望不同?我做错了什么或者我的期望是不正确的,所以我总是需要为不允许为nil的变量指定值?

1 个答案:

答案 0 :(得分:1)

validates指令检查属性是否在创建时存在(并且不是因为您没有在create的参数中指定它)。

删除validates :admin, presence: true会导致在未指定false时应用默认值(admin)。