我有一个名为 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>
我错过了什么?
答案 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