Rails外键验证

时间:2012-12-07 20:17:48

标签: ruby-on-rails validation foreign-keys

我有一个用户和一个文档模型;用户拥有许多文档,文档属于用户。您可以将其概括为只有父模型和子模型。

现在我正在为子模型编写单元测试,我想知道是否还必须验证parent_id字段(例如only_integer,大于零,id表存在于父表中,等等) - 或者Rails会自动为我做这些,因为那些是固有的外键属性吗?

2 个答案:

答案 0 :(得分:4)

Rails 3方式将是

# child.rb
validates :parent, presence: true

答案 1 :(得分:3)

您可以添加外键约束,即使是通过Rails(即不必手动连接到数据库并执行原始SQL),但您也可以在模型本身上执行此操作:

# child.rb
validates_presence_of :parent

这将确保它具有parent_id并且在Parent表中找到该ID。

否则,不,Rails不会自动检查您的约束。