在模型中使用枚举,保存时不喜欢整数值

Bla*_*man 1 ruby-on-rails

使用rails 4.1.1

我的模型有一个枚举像:

class Article < ActiveRecord::Base
  enum article_status: { published: 1, draft :2 }
Run Code Online (Sandbox Code Playgroud)

现在在我的new.html.erb中我有:

<%= form.select :article_status, options_for_select(Article.article_statuses) %>
Run Code Online (Sandbox Code Playgroud)

当要保存模型时,我收到此错误:

'1' is not a valid article_status
Run Code Online (Sandbox Code Playgroud)

我以为它可以在更新期间处理这个问题.

我究竟做错了什么?

Gen*_*ene 5

控制器中的update_attributesnew调用将期望枚举符号的字符串化版本,而不是整数.所以你需要这样的东西:

options_for_select(Article.article_statuses.
  collect{|item, val| [item.humanize, item]}, selected: @article.status)
Run Code Online (Sandbox Code Playgroud)

这篇文章中有一个完整的例子.