使用多态关联的Activity Feed无法获得a:dependent => :破坏工作

时间:2012-01-26 16:11:18

标签: ruby-on-rails ruby-on-rails-3 feed enumeration polymorphic-associations

我有一个模型用于生成名为Activity的活动源,其中包含以下列:

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

我正在尝试将每个活动附加到值中显示在Feed中的不同类型的对象(例如添加到收藏夹,新连接等)。现在存在以下关联:

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

我正在尝试使用source_id作为连接对象的主键(例如收藏夹)和activity_type作为枚举(例如,收藏夹=> 1,邀请=> 2)使用simple_enum gem。

问题:我无法使用:dependent => :destroy来处理“收藏夹”模型。它在异常中提醒我,一旦删除收藏夹,我就没有一个favorites_id外键来干净地删除一个Activity。我怎么处理这个?

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

1 个答案:

答案 0 :(得分:2)

我认为activity_type字段应该被称为source_type,这样Rails就可以自动处理多态内容,并且你不需要用枚举手动控制它的值。