8

嘿,我有一个模型 foo has_one :bar。和酒吧belongs_to :foo。我想知道是否有一种方法可以增加 has_one 使得没有两个条可以属于同一个 foo。我查看了 has_one 的文档,似乎没有允许我指定的 :uniq 参数。那么我是否必须创建一个自定义验证来实现这一点?或者有没有更简单的方法?

谢谢。

4

3 回答 3

17

您不需要自定义验证,只需为任何给定的 foo 强制 bar 的唯一性

class Bar < ActiveRecord::Base
  belongs_to :foo
  validates_uniqueness_of :foo_id
end
于 2011-06-07T17:33:50.037 回答
2

为表 bar 中的 foo_id 添加一个 uniq 索引,因此您不能创建 2 个具有相同 foo_id 的 bar,因此只有一个 bar 可以属于 foo

于 2018-06-12T15:58:31.880 回答
0

我认为您应该编写自己的验证,因为 Foo 的两个不同记录不知道其他相关记录(Bar)

于 2011-06-07T16:57:51.677 回答