Rails 4关系和Postgres外键约束

时间:2015-10-01 13:56:33

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

我正在开发Rails 4中的库存跟踪应用程序,目的是记录每个用户所做的交易。我已经设置了三个具有以下关系的模型:

项目:has_many:交易

用户:has_many:transactions

交易:belongs_to:user,belongs_to:item

用户ID和项目ID是Transaction表中的外键,用于将用户和项目与每个事务相关联。

当我尝试删除项目或用户时出现问题。我希望事务保持,所以我没有启用依赖destroy,但Postgres外键约束不允许删除,并出现以下错误:

ActiveRecord :: InvalidForeignKey(PG :: ForeignKeyViolation:错误:表“项目”上的更新或删除违反了表“事务”上的外键约束“fk_rails_37b3ea4e18”

是否有更好的方法来设置此关系,以允许事务与用户和项目相关联,但在用户或项目被删除后仍然存在?

1 个答案:

答案 0 :(得分:2)

您需要删除外键约束。

您还可以保留外键约束并使用"软删除"一旦用户设置为已删除,可以将布尔字段设置为true。

事实仍然是:如果您使用外键约束,那么您需要进行级联删除。