2

我有用於生成具有以下列活動飼料稱爲活動的典範:活動飼料:依賴=>:銷燬工作

t.integer "user_id" 
t.datetime "created_at" 
t.datetime "updated_at" 
t.integer "source_id",  :null => false 
t.integer "activity_type", :null => false 
t.text  "data",   :null => false 

我想將每個活動附加到不同類型的對象中(例如添加到收藏夾,新連接等)。以下關聯現在存在:

belongs_to :user 
belongs_to :source, :polymorphic => true 

我試圖使用source_id作爲連接對象的主密鑰(例如收藏)和activity_type作爲枚舉(例如收藏=> 1,請柬=> 2),使用simple_enum寶石。

問題:我無法獲得:dependent => :destroy在收藏夾模型上工作。它讓我想起了一個例外情況,即我沒有收藏夾_id的外鍵,只要刪除收藏夾,它就可以乾淨地刪除活動。我該如何處理?

ActiveRecord::StatementInvalid (PGError: ERROR: column activities.favorite_id does not exist' 

回答

2

我相信ACTIVITY_TYPE場應該被稱爲SOURCE_TYPE時,Rails這樣可以自動處理多態的東西,你就不會需要手動控制它的使用枚舉值。

+0

是的,這是正確的。我應該看看Rails指南 - 這非常簡單。謝謝! – adarsh