Ruby on rails 使用RubyonRailsActiveRecord';妇女协会?

Ruby on rails 使用RubyonRailsActiveRecord';妇女协会?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我只是在玩RoR,我注意到,ActiveRecord关联(如有许多或属于等)与后面运行的数据库是解耦的,也就是说,这些关联的设置与数据库设置的约束无关。例如,我有一个表comments和一个表users,它们通过有许多和属于语句(一条注释属于一个用户,一个用户有许多注释)进行关联。但是,这些关联仍然允许我将注释分配给(例如)不存在的用户。原因是数据库中没有定义外键 我的问题是:我应该仅仅依靠ActiveRecord的关联来处理数据完整性,还是应该在迁移文件中添加外键 谢谢。Rails有一些约定,

我只是在玩RoR,我注意到,ActiveRecord关联(如
有许多
属于
等)与后面运行的数据库是解耦的,也就是说,这些关联的设置与数据库设置的约束无关。例如,我有一个表
comments
和一个表
users
,它们通过
有许多
属于
语句(一条注释属于一个用户,一个用户有许多注释)进行关联。但是,这些关联仍然允许我将注释分配给(例如)不存在的用户。原因是数据库中没有定义外键

我的问题是:我应该仅仅依靠ActiveRecord的关联来处理数据完整性,还是应该在迁移文件中添加外键


谢谢。

Rails有一些约定,数据完整性的实施应该在应用程序中进行,而不是在数据库中


要在应用程序级别保持数据的整数,可以使用模型验证来强制存在关联

您必须将外键添加到迁移文件中,以使关联正常工作。参考前面提到的示例,您必须向comments表添加一个属性user_id。有关活动记录关联如何工作的更多信息,请遵循此操作。

是的,我知道应该在comments表中添加用户id列,但也应该在数据库中创建外键?@roman.brodetski在下面的回答中指出,Rails约定强制数据完整性由应用程序执行,而不是由数据库引擎执行。你的观点是什么?不,你不必在数据库中创建外键。这是由Rails应用程序本身处理的。您不必直接在数据库级别执行任何操作(数据库更改)。为确保数据完整性,所有操作都将在应用程序级别执行。