【发布时间】:2009-07-27 18:57:42
【问题描述】:
在 Rails 应用程序中,我在 MySQL 中有外键约束,我手动设置它们,与我的迁移分开。
我想弄清楚是否应该使用 ActiveRecord 的 :dependent => :destroy 选项。例如,在我的架构中,我有表...
users
-----
log_entries
-----------
user_id # Has FK constraint to users.id with ON DELETE CASCADE
在我的模型中,我可以...
class User < ActiveRecord::Base
has_many :log_entries, :dependent => :destroy
end
我是否应该忽略模型上的依赖选项而将其留给数据库?还是把它放在那里好吗?删除此应用程序中的内容时,我不需要运行任何回调。在所有情况下,都可以简单地删除它们。
另一个需要考虑的因素是 FK 约束不会出现在我的测试环境中,这可能是因为 rake db:test:prepare 没有设置它们。因此,如果我完全依赖 MySQL 级联删除,很难测试会发生什么。
【问题讨论】:
标签: mysql ruby-on-rails ruby activerecord