如何保护Rails关联(防止覆盖)

时间:2013-04-09 21:02:43

标签: ruby-on-rails ruby-on-rails-3 activerecord

我有一个has_one关系的对象。更具体地说,这是关系:

class Product < ActiveRecord::Base
  has_one :domain
end

class Domain < ActiveRecord::Base
  belongs_to :product
end

这是一个非常基本的联想。然而,我想弄清楚的是一些防止关联覆盖的方法。

假设我有一个产品,其域名为“google.com”,后跟一个试图保存为“google.com”的新产品。我希望第二个失败。

有关如何提供此关联验证的任何想法?

2 个答案:

答案 0 :(得分:0)

您正在寻找validates <field>, uniqueness: true

答案 1 :(得分:0)

因此,为了执行我想要的验证,我必须将以下内容添加到域模型中:

before_update :update_test

def update_test
   product_id_was.nil? || product_id.nil?
end