Ruby on rails 如何制作一个;独特的“多对多自连接”;在轨道上?

Ruby on rails 如何制作一个;独特的“多对多自连接”;在轨道上?,ruby-on-rails,ruby,validation,associations,Ruby On Rails,Ruby,Validation,Associations,我读过很多关于自我连接的文章。我的问题是我需要它是独一无二的 #app/models/word.rb 类Word

我读过很多关于自我连接的文章。我的问题是我需要它是独一无二的

#app/models/word.rb
类Word
这将引发错误或不执行:


word.definers为了避免重复,您需要在数据库中添加一个唯一的索引
add\u index:defined\u definers,[:definer\u id,:defined\u id],unique:true
或者将您在每个地方的代码更改为
word.definers,我假定
word.defined
指由[其他单词]定义的
单词
Word.definers
表示该词的定义者。这个词不可能是它自己的定义。这听起来像是一个有向无环图,将它们存储在DB中并不是一个小问题(Rails提供的库存关联是无法解决的)。(如果不是您的意思,请随时更新您的问题)但是,如果您已经在生产中有数据,迁移这些数据可能会非常困难。我已经添加了一个唯一的索引,但这还不够。如果您的意思是
word.defined
永远不能在
word.definers
中,那么您可以在关联模型
defined\u definers
中添加自定义验证。在该验证中,检查
defined\u id
是否不等于
definer\u id