我有一个模型用于生成名为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'
答案 0 :(得分:2)
我认为activity_type字段应该被称为source_type,这样Rails就可以自动处理多态内容,并且你不需要用枚举手动控制它的值。