Rails不支持引用完整性外键。我该如何管理它呢?理想情况下,应用程序不应该处理这个问题;数据库应该是这样的。2像外国人这样的插件有缺点吗?3如何处理?
xvw2m8pv1#
这是Rails ActiveRecord的一个设计决策。我认为存储过程和约束是一致性的卑鄙和鲁莽的破坏者。不,数据库先生,你不能拥有我的业务逻辑。你的过程野心不会有结果,你必须从我冰冷的面向对象的手中撬出逻辑。Choose a single layer of cleverness - DHH所以答案是DB处理的引用完整性根本不是Rails的方式。
r6vfmomb2#
如果您不熟悉引用完整性,那么它是关系数据库防止意外删除其他记录所指向的记录的方法。您可以使用rails引用完整性以编程方式完成此操作,方法是将以下内容添加到has_one或has_many子句中:
,:dependent => :restrict_with_error
如果您希望所有的子记录都与父记录一起销毁,请在has_one或has_many子句中使用以下语句:
,:dependent => :destroy
活动记录具有许多用于处理从属记录的选项。请参阅:活动记录文档Active Record guide
2条答案
按热度按时间xvw2m8pv1#
这是Rails ActiveRecord的一个设计决策。
我认为存储过程和约束是一致性的卑鄙和鲁莽的破坏者。不,数据库先生,你不能拥有我的业务逻辑。你的过程野心不会有结果,你必须从我冰冷的面向对象的手中撬出逻辑。
Choose a single layer of cleverness - DHH
所以答案是DB处理的引用完整性根本不是Rails的方式。
r6vfmomb2#
如果您不熟悉引用完整性,那么它是关系数据库防止意外删除其他记录所指向的记录的方法。
您可以使用rails引用完整性以编程方式完成此操作,方法是将以下内容添加到has_one或has_many子句中:
如果您希望所有的子记录都与父记录一起销毁,请在has_one或has_many子句中使用以下语句:
活动记录具有许多用于处理从属记录的选项。请参阅:
活动记录文档
Active Record guide