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

标签 ruby-on-rails activerecord

这真是要了我的命...当尝试添加一个键时:

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/

相关文章:

mysql - 使用 Active Record 区分大小写的数据库搜索

ruby-on-rails-3 - Rails 范围不等于

jquery - Zurb 基金会正在让我的 Assets 加载两次

ruby-on-rails - 重定向后 Rails session 不持久

ruby-on-rails - Ruby rails 包括?大批

codeigniter - 在 codeigniter 2.0 中扩展 CI_DB_active_record 类

ruby-on-rails - Rails Active Record - 一次保存多个对象

ruby-on-rails - Rails 上的 Ruby + Active_Record : How do I include child counts in result?

ruby-on-rails - 迁移不回滚

ruby-on-rails - rails 2 :joins and :include resultset