当已经存在的记录被添加时,如何有多个协会表现?

时间:2014-04-10 10:30:30

标签: ruby-on-rails ruby-on-rails-3 associations has-many

我正在努力解决一个更复杂的问题,但我似乎找不到关于has_many处理已经存在于关联中的对象的情况的方式的确定答案。

以下情况下的预期行为是什么(alpha有多个betas

alpha.betas << beta_1
alpha.betas << beta_1

是否应该默默忽略第二次插入(确保alpha关联中只有唯一的beta版?)

1 个答案:

答案 0 :(得分:1)

文档陈述如下:

  

collection&lt;&lt;(object,...)
  通过将其外键设置为集合的主键,将一个或多个对象添加到集合中。请注意,此操作会立即触发update sql而不等待父对象上的保存或更新调用,除非父对象是新记录。

所以我的理解是,该对象只被引用一次。因此,在active_record关系alpha.betas中只有一次。如果再次调用它,则再次将foreign_key设置为已有的相同值。所以这没有任何改变。