【发布时间】:2014-08-12 10:50:41
【问题描述】:
Rails 4.1 引入了 enums,它破坏了 rails_admin。有什么解决办法或变通办法吗?
我的模型在顶部包含以下行
enum category: {industry: 1, company: 2, event: 3}
我的 Gemfile 有以下行
gem 'rails_admin', :git => 'git://github.com/sferik/rails_admin.git'
没有与此问题相关的其他代码。我没有修改 rails_admin 引擎的默认行为。以下是我在尝试通过 rails_admin 界面编辑包含枚举属性的任何模型时遇到的错误。
ArgumentError - '3' is not a valid category:
activerecord (4.1.1) lib/active_record/enum.rb:103:in `block (3 levels) in enum'
activerecord (4.1.1) lib/active_record/attribute_assignment.rb:45:in `_assign_attribute'
activerecord (4.1.1) lib/active_record/attribute_assignment.rb:32:in `block in assign_attributes'
activerecord (4.1.1) lib/active_record/attribute_assignment.rb:26:in `assign_attributes'
() Users/nicolas/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/bundler/gems/rails_admin-1d604b22d24c/lib/rails_admin/adapters/active_record/abstract_object.rb:19:in `set_attributes'
() Users/nicolas/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/bundler/gems/rails_admin-1d604b22d24c/lib/rails_admin/config/actions/edit.rb:29:in `block (2 levels) in <class:Edit>'
(eval):8:in `edit'
actionpack (4.1.1) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (4.1.1) lib/abstract_controller/base.rb:189:in `process_action'
actionpack (4.1.1) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (4.1.1) lib/abstract_controller/callbacks.rb:20:in `block in process_action'
[...]
发生的情况是 rails_admin 无法识别枚举,并且在其界面中将它们显示为数字而不是字符串。然后,当你点击保存时,它会抛出上述异常。
【问题讨论】:
-
请添加周围的代码。所以你试图用整数设置 enam 并抛出该错误?如果是表单选择,也许可以尝试使用名称而不是 id。
-
我现在使用的是开箱即用的 rails_admin 引擎。唯一相关的代码是它包含在 Gemfile 中。我更新了问题以包含它。
标签: ruby-on-rails ruby-on-rails-4 enums ruby-on-rails-4.1