为什么rails docs将inverse_of放在belongs_to关系上

时间:2015-03-12 08:49:41

标签: ruby ruby-on-rails-4 rails-activerecord

为什么rails docs说在inverse_of关系中使用has_* - belongs_to

class Customer < ActiveRecord::Base
  has_many :orders, inverse_of: :customer
end

class Order < ActiveRecord::Base
  belongs_to :customer, inverse_of: :orders
end

无论如何,在使用rails时,我可以看到当你将inverse_of放入belongs_to关联时会出现错误。我的观察结果是否正确(文档缺少重点)或我做错了什么?

事实证明,这是我的拼写错误+一个IDE神奇的东西让我觉得它是rails事。

1 个答案:

答案 0 :(得分:1)

  

为什么rails docs会将inverse_of放在belongs_to关系

在获取关联记录时,这样做是为了内存优化。默认情况下,关联对象不指向相同的内存中对象。因此,只要您在order.customerinverse_of关联中:belongs_to :has_many :inverse_of,它就会点击数据库。使用order.customer,如果我们已在内存中拥有该客户记录,则{{1}}将指向同一客户。

详细参考:http://viget.com/extend/exploring-the-inverse-of-option-on-rails-model-associations