How to Properly Configure Rails 4.1 Enums in ActiveAdmin

In order to use enums in ActiveAdmin's filters use:

filter :level, as: :select, collection: Model.levels

assuming an enum attribute named level

This will make sure to actually put the integer value in the query and not the key name.


do this:

f.input :privacy_level, :as => :select, :collection =>  privacy_level.keys.to_a

Building off of Jack's answer, here's what worked for me. Say your ActiveRecord model is Tweets:

f.input :privacy_level, as: :select, collection: Tweet.privacy_levels.keys

Key things to note here:

  • your ActiveRecord has a useful dictionary (available at enum_name.pluralize) of enum keys to values.
  • using strings (and ignoring the underlying integer representation) makes it easier to write to the enum value.