activerecord - 确保belongs_to在保存时指向有效记录

时间:2011-04-13 04:18:10

标签: ruby-on-rails validation activerecord

使用belongs保存记录时,是否可以确保保存在子记录中的外键实际存在于父表中? (假设它不是多态的)。

我知道有插件可以做到这一点,但我想知道ar是否有办法解决这个问题。

谢谢!

2 个答案:

答案 0 :(得分:1)

尝试validates_presence_of

class Model2 < ActiveRecord::Base
  belongs_to :model1

  validates_presence_of :model1
end

答案 1 :(得分:1)

您可以使用before_save and before_create处理程序手动执行此操作。这些不一定是最好的方法,但你不应该害怕卷起袖子,必要时手工完成工作。

并且,因为你是明智的(AKA偏执狂),你可以在数据库中放置一个真正的外键约束;数据库中的FK还可以防止因删除其他内容引用的内容而导致的损坏。缺点是ActiveRecord并不真正支持数据库中的FK,因此您必须手动使用RAW SQL添加和维护它们。