我有一个使用Postgresql数据库的Rails 4应用程序。我正在使用UUID作为我的模型的id。
一切都按预期工作,我试图设置一个依赖的破坏有很多关系,而“依赖破坏”不起作用。
背叛UUID和依赖性破坏之间是否存在任何不相容之处?我需要设置外键吗?
我赦免了我的一些代码:
通过模型导航工作正确
定义我正在使用的has_many
has_many :some_models, dependent: :destroy
我的迁移类似于:
def change
create_table :my_model, id: :uuid do |t|
要测试,我正在使用控制台。我创建了一个关系,删除了“some_models”,主模型没有被删除。
由于
答案 0 :(得分:1)
你正在考虑向后关联。 dependent: destroy
表示:当我销毁父记录时,销毁与该记录关联的子节点。这是一个人为的例子:
class User
has_many :photos, dependent: :destroy
end
删除用户后,您也希望删除他们的照片。
如果您确实要在删除子项时删除父记录,可以通过before_destory
回调执行此操作,如下所示:
class Photo
before_destory :delete_parent_user
def delete_parent_user
user.destory if self.user
end
end
请注意,如果这是has_many
关系,其他孩子可能仍然指向该父记录,因此这可能不合适。
答案 1 :(得分:0)
dependent: :destroy
只会破坏儿童记录。当您销毁my_model
条记录时,属于它的所有some_model
条记录都将被销毁。