Ruby on Rails 的默认行为是保存对集合关联所做的更改。有什么方法可以改变这种行为,这样我就可以修改内存中的集合,而无需将更改写入数据库。
因此,如果我有两个课程:
class Project < ActiveRecord::Base
has_many :tasks
class Task < ActiveRecord::Base
belongs_to :project
并编写一些代码,例如:
Project.tasks.clear
Project.tasks << task1
Project.tasks << task2
然后它会自动删除与项目关联的所有任务,并自动将更改写入数据库。
这是我试图实现的一个人为的例子。我知道我可以使用 Project.tasks.build() 在不自动保存的情况下向集合中添加新任务,但我添加的任务不是新任务。它们是定义的有限任务集的链接在分贝。您可以将它们视为任务枚举中的条目。此外 Project.tasks.clear 立即命中数据库。
在 java 世界中,使用 Hibernate,我会断开实体与会话的连接,并能够修改内存中的实体,直到重新连接并保存。
谢谢