Rails / Ruby - 与此枚举相关的错误感到困惑

时间:2014-12-17 18:26:00

标签: ruby-on-rails ruby activerecord

我创建了一个问题,其中包含列出可能在表单中使用的性别值的枚举等:

genderable.rb

module Genderable
  extend ActiveSupport::Concern

  included do
    enum gender: [:"Not Known", :"Male", :"Female", :"Not Applicable"]
  end

end

这里我将其包含在我的模型中:

user.rb

class User < ActiveRecord::Base

  include Genderable

  has_one :user_gender
  has_one :gender, :through => :user_gender

  accepts_nested_attributes_for :user_gender

end

我在以下视图中使用它:

edit.html.erb

<div class="form-group">
  <%= f.select :gender, User.genders, :class => "form-control" %>
  <%= showErrorMessages("Gender", :gender) %>
</div>

这是为我的观点生成的标记:

<select id="user_gender" name="user[gender]">
  <option value="0">Not Known</option>
  <option value="1">Male</option>
  <option value="2">Female</option>
  <option value="3">Not Applicable</option>
</select>

这是我在尝试依赖以上所有内容提交表单时收到的错误消息:

Here's the error message I get when attempting to submit the form relying upon all of the above:

似乎ActiveRecord不喜欢这样一个事实,即性别的价值是一个字符串,而不是一个整数(我猜测!)。或者它可能不喜欢该值与我创建的枚举的符号值之一不匹配。我真的不确定。有谁知道问题是什么?基本上,我只想用用户ID和所选值更新user_genders表。

1 个答案:

答案 0 :(得分:0)

您无法将整数值分配给enum。您需要指定实际符号。

对于您的观点,您应该使用:

<%= f.select :gender, User.genders.keys, :class => "form-control" %>

为了生成如下所示的选择:

<option value="Not Known">Not Known</option>
<option value="Male">Male</option>
<option value="Female">Female</option>
<option value="Not Applicable">Not Applicable</option>