为什么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事。
答案 0 :(得分:1)
为什么rails docs会将inverse_of放在belongs_to关系
上
在获取关联记录时,这样做是为了内存优化。默认情况下,关联对象不指向相同的内存中对象。因此,只要您在order.customer
和inverse_of
关联中:belongs_to
:has_many
:inverse_of
,它就会点击数据库。使用order.customer
,如果我们已在内存中拥有该客户记录,则{{1}}将指向同一客户。
详细参考:http://viget.com/extend/exploring-the-inverse-of-option-on-rails-model-associations