2014-02-05 2 views
3

Я просто обновить мое приложение к рельсам 4.1.0.beta1рельсы 4.1 неспособные получить все типы перечислений

У меня есть класс

class User < ActiveRecord::Base 
    enum usertype: { :employee => 10, :boss => 30, :manager => 40, :admin => 50 } 
} 

Все функция перечисления хорошо работает как user.boss? # Р

Но когда я пытаюсь получить все типы пользователей по

User.usertypes 

Я получил неопределенный метод «usertypes»

Любые помогает?

Это Свяжите я узнал из http://edgeapi.rubyonrails.org/classes/ActiveRecord/Enum.html

Edit: миграция

class CreateUsers < ActiveRecord::Migration 
    def change 
    create_table :users do |t| 
     t.string :email 
     t.string :password_digest 
     t.string :remember_token 
     t.boolean :is_locked 
     t.integer :usertype, default: 10 
     t.timestamp :last_login_at 

     t.timestamps 
    end 
    end 
end 

ответ

3

Вы создали надлежащие миграции?

Атрибуты перечисления: значения, которые соответствуют целям в базе данных, но могут быть запрошены по имени.

Таким образом, вам понадобится миграция, которая добавляет целочисленный столбец с именем «тип пользователя» в таблицу «Пользователи». Вы это сделали?

EDIT 1:

Хорошо, просто проверял, и методы класса, чтобы получить отображение не работает с Rails 4.1.0.beta1, но работать с краевым Rails. Таким образом, мы надеемся, что получает втягивается в очередной бета-версии ...

EDIT 2:

Кроме того, проверьте this commit, который демонстрирует, как вы бы получить доступ к отображение перечислимую в Rails 4.1.0.beta1 с помощью константа вместо метода класса. Поэтому в вашем случае вы можете использовать User::USERTYPE для доступа к вашему картографированию.

+0

Да, я посмотрел мое редактирование – etlds

+0

Для экземпляра пользователя работает ли перечисление? например 'User.find (1) .usertype'? –

+0

Да, он работает отлично. – etlds

Смежные вопросы