在模型中给出枚举数据类型后,获得'1'不是有效状态

时间:2017-11-30 07:11:33

标签: ruby-on-rails

我有一个名为 production.rb

的模型

在productions表中,我创建了一个状态列,其中integer为类型,然后我在模型文件中添加了enum数据类型,以使其更具可读性。如下:

class Production < ApplicationRecord    
  enum status:{
    Preproduction:1,
    Postproduction: 2,
    Completed:3
  }
end

在添加此枚举数据类型之前,创建更新操作正常运行。一旦我添加,每当我尝试创建新记录或更新该问题时,我都会收到此错误:

ArgumentError in ProductionsController#create
'1' is not a valid status

prductions_controller.rb

def create
    @production = Production.new(production_params)
    #####
end


 def production_params
      params.require(:production).permit(:name, :director, :status)
 end

用于输入数据的表单中的文本字段:

_form.html.erb

<div class="field">
    <%= form.label :status %>
    <%= form.number_field :status, id: :production_status %>
  </div>

我错过了什么?

2 个答案:

答案 0 :(得分:2)

 def production_params
      pp = params.require(:production).permit(:name, :director)
      pp[:status] = params[:production][:status].to_i
      return pp
 end

重新启动服务器后再试一次,希望这会有效。

答案 1 :(得分:2)

因为它只接受整数(1/2/3)或状态字符串(Preproduction / Postproduction / Completed)。您可以尝试使用下拉菜单:

form.select :status, Production.statuses.keys.to_a