How to Properly Configure Rails 4.1 Enums in ActiveAdmin

后端 未结 3 671
日久生厌
日久生厌 2021-02-02 07:48

I\'ve got a Rails 4.1 app in which I use an enum to represent the privacy level of an object.

In my schema:

t.integer \"privacy_level\", default: 0


        
相关标签:
3条回答
  • 2021-02-02 08:15

    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.

    0 讨论(0)
  • 2021-02-02 08:18

    do this:

    f.input :privacy_level, :as => :select, :collection =>  privacy_level.keys.to_a
    
    0 讨论(0)
  • 2021-02-02 08:19

    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.
    0 讨论(0)
提交回复
热议问题