这让我感到害怕...当试图添加一个像这样的键时:
category.site_ids << 1
category.save
它没有保存。但是当完全覆盖时,它可以工作:
category.site_ids = [1]
category.save
我在这里缺少什么?
答案 0 :(得分:3)
简单的答案是rails不支持它:)这听起来像是一个聪明的答案,但让我解释一下。首先,here's the documentation。
我们认为category.site_ids
是一个常规数组,但事实并非如此。为了让您像对待数组一样对待它并在幕后拥有所有数据库魔术(记录创建,更新,销毁),rails开发人员必须覆盖数组方法。 ruby中的数组有几十种方法,并且制作集合关联(有许多,habtm)都是不切实际的。
现在,您可以执行category.sites << site
,这样可行。所以对于id来说同样没有技术问题。它可能是一个选择,或者可能是没有人编写它:)