考虑以下人为设计的示例:
class Company < ActiveRecord::Base
has_many :projects
end
class Project < ActiveRecord::Base
belongs_to :company
end
c, p = Company.new, Project.new
c.projects << p
p.company => c
当一个项目被添加到集合中时,Rails 会自动设置与公司的反向关联。不幸的是,这是唯一一次 Rails 足够聪明地做到这一点。另一方的赋值不会将对象添加到反向集合中。
c, p = Company.new, Project.new
p.company = c
c.projects => []
多对多关系也不进行任何自动反向引用分配。ActiveRecord 和 DataMapper 都表现出这种行为。这有技术原因吗?在保存和重新加载发生之前的一致关联将大大加快某些测试用例的速度,并且总体上会使事情变得更清洁。