我的迁移文件包含:
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的变量指定值?
答案 0 :(得分:1)
validates
指令检查属性是否在创建时存在(并且不是因为您没有在create
的参数中指定它)。
删除validates :admin, presence: true
会导致在未指定false
时应用默认值(admin
)。