我正在开发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”
是否有更好的方法来设置此关系,以允许事务与用户和项目相关联,但在用户或项目被删除后仍然存在?
答案 0 :(得分:2)
您需要删除外键约束。
您还可以保留外键约束并使用"软删除"一旦用户设置为已删除,可以将布尔字段设置为true。
事实仍然是:如果您使用外键约束,那么您需要进行级联删除。