首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁用通过has_many关联自动保存-断开ActiveRecord实体与会话的连接

禁用通过has_many关联自动保存-断开ActiveRecord实体与会话的连接
EN

Stack Overflow用户
提问于 2012-07-06 19:51:17
回答 1查看 712关注 0票数 5

Ruby on Rails的默认行为是保存对集合关联所做的更改。有没有什么方法可以改变这种行为,这样我就可以修改内存中的集合,而不会将更改写入数据库。

所以如果我有两个类:

代码语言:javascript
复制
class Project < ActiveRecord::Base
  has_many :tasks

class Task < ActiveRecord::Base
  belongs_to :project

并编写一些代码,如:

代码语言:javascript
复制
Project.tasks.clear
Project.tasks << task1
Project.tasks << task2

然后,它会自动删除与该项目关联的所有任务,并自动将更改写入数据库。

这是我试图实现的一个人为的例子。我知道我可以使用Project.tasks.build()将一个新任务添加到集合中,而不会自动保存它,但是我添加的任务不是新的tasks.They是指向在db中定义的有限任务集的链接。您可以将它们视为任务枚举中的条目。此外,Project.tasks.clear会立即命中数据库。

在java的世界里,使用Hibernate,我会断开实体与会话的连接,并且能够修改内存中的实体,直到重新连接并保存。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2013-05-08 04:07:22

您是否尝试过改用task_ids属性?

将您的代码更改为:

代码语言:javascript
复制
Project.tasks_ids = []
Project.tasks_ids << task1.id
Project.tasks_ids << task2.id

我知道这个问题有点老了,但自从我尝试在谷歌上搜索类似的问题后,我想这可能对其他人有用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11361668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档