2010-10-19 72 views
1

这是我的命......当试图添加一键像这样:的Rails 3 - HABTM不更新连接表与<<

category.site_ids << 1 
category.save 

它不保存。但是当完全覆盖时,它可以工作:

category.site_ids = [1] 
category.save 

我在这里丢失了什么?

回答

2

简单的答案是,轨道不支持它:)这听起来像是聪明的答案,但让我解释一下。首先,here's the documentation。我们想认为category.site_ids是一个常规数组,但它不是。为了让您像数组一样对待它,并在后台拥有所有数据库魔术(记录创建,更新,销毁),rails开发人员必须重写数组方法。红宝石数组有几十种方法,并且使得收集协会(有很多,habtm)做所有这些都是不切实际的。

现在,你可以做category.sites << site,那可行。所以对于id的做法没有任何技术问题。这可能是一个选择,或者它可能是没有人编码它:)

+0

谢谢,海梅。我正在检查你昨天链接到的文档,并一直认为我错过了一些东西......你确定了我以前做过的事情(“对象”)但忘记了。再次感谢。 – TMB 2010-10-19 15:42:34

+0

很高兴能帮到你! – 2010-10-19 22:40:34