2015-06-23 4 views
0

Я встретил мало непредсказуемого поведения рельсов db:seed.модели рельсов не нашли атрибут в семенах

У меня есть модель, которая имеет атрибут status.

class Task 
    enum status: { todo: 0, awaiting: 1, starting: 2, pending: 3, ending: 4, done: 5, waste: 6 } 

Если я проверить Task на консоли, я вижу status поле.

=> Task(id: integer, title: string, status: integer) 

Но если я поднимаю модель Task (raise Task.inspect) в семени, я получаю только

=> Task(id: integer, title: string) 

Без status. Почему атрибут статуса отсутствует только в этой модели только в seeds? Есть идеи?

Исключение:

ActiveModel::MissingAttributeError: can't write unknown attribute `status` 
+0

Привет, что вы имеете в виду * если я поднимаю задачу в семени *? – ifyouseewendy

+0

Привет! Пожалуйста, см. Обновленный ответ – asiniy

ответ

0

Вы должны определить этот атрибут как attr_accessor атрибут в вас модели.

Возможно этот пост будет полезен: http://rubyinrails.com/2014/03/17/what-is-attr_accessor-in-rails/

+0

Омг, зачем мне это делать? 'ActiveRecord enum' метод определяет attr_acessors для меня – asiniy

+0

Ну, может быть, вы должны спросить себя **« Почему я хочу, чтобы в задании семян не сохранялся атрибут? »**. Семена, как говорится в ее названии, что-то касаются базы данных, поэтому, возможно, вы хотите сделать это упорным. –

+0

Я спросил, почему «почему рельсы ведут себя непредсказуемо»? – asiniy

0

Если вы хотите использовать enum в семени, попробуйте это status: Task::status['todo']

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