Rails 3 - HABTM未使用<<更新连接表

时间:2010-10-19 01:41:21

标签: ruby-on-rails activerecord

这让我感到害怕...当试图添加一个像这样的键时:

category.site_ids << 1
category.save

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

category.site_ids = [1]
category.save

我在这里缺少什么?

1 个答案:

答案 0 :(得分:3)

简单的答案是rails不支持它:)这听起来像是一个聪明的答案,但让我解释一下。首先,here's the documentation

我们认为category.site_ids是一个常规数组,但事实并非如此。为了让您像对待数组一样对待它并在幕后拥有所有数据库魔术(记录创建,更新,销毁),rails开发人员必须覆盖数组方法。 ruby中的数组有几十种方法,并且制作集合关联(有许多,habtm)都是不切实际的。

现在,您可以执行category.sites << site,这样可行。所以对于id来说同样没有技术问题。它可能是一个选择,或者可能是没有人编写它:)