嘿,我有一个模型 foo has_one :bar
。和酒吧belongs_to :foo
。我想知道是否有一种方法可以增加 has_one 使得没有两个条可以属于同一个 foo。我查看了 has_one 的文档,似乎没有允许我指定的 :uniq 参数。那么我是否必须创建一个自定义验证来实现这一点?或者有没有更简单的方法?
谢谢。
嘿,我有一个模型 foo has_one :bar
。和酒吧belongs_to :foo
。我想知道是否有一种方法可以增加 has_one 使得没有两个条可以属于同一个 foo。我查看了 has_one 的文档,似乎没有允许我指定的 :uniq 参数。那么我是否必须创建一个自定义验证来实现这一点?或者有没有更简单的方法?
谢谢。
您不需要自定义验证,只需为任何给定的 foo 强制 bar 的唯一性
class Bar < ActiveRecord::Base
belongs_to :foo
validates_uniqueness_of :foo_id
end
为表 bar 中的 foo_id 添加一个 uniq 索引,因此您不能创建 2 个具有相同 foo_id 的 bar,因此只有一个 bar 可以属于 foo
我认为您应该编写自己的验证,因为 Foo 的两个不同记录不知道其他相关记录(Bar)