创建

时间:2016-02-03 15:24:52

标签: ruby-on-rails

我不明白为什么create方法会给我一个带有这些参数的ROLLBACK ......

error_create

该模型具有以下验证...

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我收到了错误,我做的验证是对的吗?

1 个答案:

答案 0 :(得分:0)

基于此documentation

  

自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] }