我正在努力解决一个更复杂的问题,但我似乎找不到关于has_many
处理已经存在于关联中的对象的情况的方式的确定答案。
以下情况下的预期行为是什么(alpha
有多个betas
:
alpha.betas << beta_1
alpha.betas << beta_1
是否应该默默忽略第二次插入(确保alpha关联中只有唯一的beta版?)
答案 0 :(得分:1)
文档陈述如下:
collection&lt;&lt;(object,...)
通过将其外键设置为集合的主键,将一个或多个对象添加到集合中。请注意,此操作会立即触发update sql而不等待父对象上的保存或更新调用,除非父对象是新记录。
所以我的理解是,该对象只被引用一次。因此,在active_record关系alpha.betas
中只有一次。如果再次调用它,则再次将foreign_key设置为已有的相同值。所以这没有任何改变。