Rails验证失败,在控制器中创建。

时间:2016-09-26 17:24:31

标签: ruby-on-rails

我正在尝试创建一条记录(如果不存在)。

3[System.Int32,System.String,<>f__AnonymousType2

bom_created,recipe_created和cost_rollup_complete是我的模型的必填字段。

.fields
{
    color: #646c70;
    border: none;
    padding: 10px;
    width: 83%;
    position: relative;
}
.fields:after {
  display:block;
  content: '';
  border-bottom: solid 3px #019fb6;  
  transform: scaleX(0);  
  transition: transform 250ms ease-in-out;
}
.fields:focus:after { transform: scaleX(1); }
.fields:after{  transform-origin:  0% 50%; }

我认为我把这些值作为创作的一部分传递但我得到了

@construction = Construction.create!(:bom_created => false,
                                    :recipe_created => false,
                                    :cost_rollup_complete => false,
                                    :opportunity_id => $current_opportunity)

2 个答案:

答案 0 :(得分:3)

validates_presence_of将对false返回无效。 (false.present? => false

您应该使用

validates_inclusion_of :bom_created, in: [true, false]
validates_inclusion_of :recipe_created, in: [true, false]
validates_inclusion_of :cost_rollup_complete, in: [true, false]

答案 1 :(得分:3)

  

如果要验证是否存在布尔字段(其中实数值为true和false),则需要使用validates_inclusion_of:field_name,在:[true,假]。

将您的验证更改为

validates_inclusion_of :bom_created,          in: [true, false]
validates_inclusion_of :recipe_created,       in: [true, false]
validates_inclusion_of :cost_rollup_complete, in: [true, false]

source