我不明白为什么create方法会给我一个带有这些参数的ROLLBACK ......
该模型具有以下验证...
class Question < ActiveRecord::Base
#model validations
validates :title, presence: true, length: { maximum: 255 }
validates :required, presence: true
validates :has_other, presence: true, inclusion: [true, false]
validates :position, presence: true, numericality: { only_integer: true }
validates :question_cluster, presence: true
#model relations
has_many :options
belongs_to :question_cluster
end
有没有办法明确知道为什么不接受创作?
修改
errors.full_messages
我得到["Has other can't be blank"]
,为什么会这样?
编辑2:
来自schema.rb
create_table "questions", force: :cascade do |t|
t.string "title", limit: 255
t.boolean "required"
t.boolean "has_other"
t.integer "position"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "question_cluster_id"
end
顺便提一下,我注意到如果我尝试使用"has_other"=>true
创建一个问题,它可以正常工作,但是"has_other"=>false
我收到了错误,我做的验证是对的吗?
答案 0 :(得分:0)
自false.blank?是的,如果你想验证布尔字段的存在,你应该使用以下验证之一:
validates :boolean_field_name, presence: true
validates :boolean_field_name, inclusion: { in: [true, false] }
validates :boolean_field_name, exclusion: { in: [nil] }
所以你的验证将是其中之一:
validates :has_other, presence: true
validates :has_other, inclusion: { in: [true, false] }
validates :has_other, exclusion: { in: [nil] }