Rails acts_as_soft_deletable with has_and_belongs_to_many

时间:2011-11-10 10:15:34

标签: ruby-on-rails activerecord

我对acts_as_soft_deletable插件和has_and_belongs_to_many关系有问题。

我有一个模型“地方”,有几个类别(如餐厅,酒店等)。这意味着在数据库中创建了一个表“places_categories”,其中包含两列“place”和“category”。

当我销毁一个地方时,它被acts_as_soft_deletable放在“deleted_places”表中。然后我尝试恢复它并且应用程序崩溃,因为没有类别的地方不能存在。 “places_categories”中存储了该地点属于哪些类别的条目将被删除。

当地点移动到“deleted_places”表格时,如何确保“places_categories”不会删除关系?

1 个答案:

答案 0 :(得分:1)

由于没有选项可以显式保留这些条目 - 你可以做一些疯狂和愚蠢的事情,只需将delete_sql选项覆盖为空字符串或不会在“数据库端”失败的事情,如下所示:

class Place
    has_and_belongs_to_many :categories, :delete_sql => "select true"
end

未经测试!只是一个想法。

您可以阅读所有可用选项here