ian*_*zer 5 activerecord autosave ruby-on-rails has-many
Ruby on Rails的默认行为是保存对集合关联所做的更改.有没有办法改变这种行为,这样我就可以修改内存中的集合,而无需将更改写入数据库.
所以如果我有两个班:
class Project < ActiveRecord::Base
has_many :tasks
class Task < ActiveRecord::Base
belongs_to :project
Run Code Online (Sandbox Code Playgroud)
并写一些代码,如:
Project.tasks.clear
Project.tasks << task1
Project.tasks << task2
Run Code Online (Sandbox Code Playgroud)
然后它会自动删除与项目关联的所有任务,并自动将更改写入数据库.
这是我想要实现的一个人为的例子.我知道我可以使用Project.tasks.build()将新任务添加到集合中,而不会自动保存,但我添加的任务不是新任务.它们是指定一组有限任务的链接在db.您可以将它们视为任务枚举中的条目.另外Project.tasks.clear立即命中数据库.
在java世界中,使用Hibernate,我会断开实体与会话的连接,并能够修改内存中的实体,直到重新连接和保存.
谢谢
您是否尝试过使用 task_ids 属性?
将您的代码更改为:
Project.tasks_ids = []
Project.tasks_ids << task1.id
Project.tasks_ids << task2.id
Run Code Online (Sandbox Code Playgroud)
我知道这个问题有点老了,但由于我尝试在谷歌上搜索类似的问题,我认为这可能对其他人有用。
归档时间: |
|
查看次数: |
678 次 |
最近记录: |