这真是要了我的命...当尝试添加一个键时:
category.site_ids << 1
category.save
它不保存。但是当完全覆盖时,它会起作用:
category.site_ids = [1]
category.save
我在这里缺少什么?
最佳答案
简单的答案是 Rails 不支持它:) 这听起来像是一个自作聪明的答案,但让我解释一下。第一,here's the documentation 。
我们想认为 category.site_ids
是一个常规数组,但事实并非如此。为了让您将其视为数组并在幕后处理所有数据库魔法(创建、更新、销毁记录),rails 开发人员必须重写数组方法。 ruby 中的数组有几十个方法,让集合关联(有很多,habtm)完成所有这些方法是不切实际的。
现在,您可以执行 category.sites << site
,这样就可以了。所以对 id 做同样的事情不存在技术问题。这可能是一个选择,也可能是还没有人编码:)
关于ruby-on-rails - Rails 3 - HABTM 未使用 << 更新连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3964788/