:dependent => :破坏postgresql uuid

时间:2015-02-17 18:39:25

标签: ruby-on-rails postgresql ruby-on-rails-4

我有一个使用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”,主模型没有被删除。

由于

2 个答案:

答案 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条记录都将被销毁。