2015-06-23 61 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) 

但是,如果我在種子籌集任務模型(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

Omg,我爲什麼要這樣做? 'ActiveRecord enum'方法爲我定義attr_acessors – asiniy

+0

好吧,也許你應該問自己**「爲什麼我要在種子任務中使用一個未持久的屬性?」**。正如它的名字所說,種子是關心數據庫的東西,所以也許你想要的是讓它持久 –

+0

我剛剛問過「爲什麼導軌行爲不可預知」? – asiniy

0

如果你想在種子使用enum,試試這個status: Task::status['todo']