假设我的Person
模型与has_many
模型有PhoneNumber
关联。每个人都有几个电话号码,其中一个始终设置为该人的主号码。我通过在primary
模型中添加PhoneNumber
布尔列来实现此功能。
现在我想想办法获得一个人的主要号码。我已将以下方法添加到Person
模型
def primary_number
self.phone_numbers.each{ |n| return n if n.primary }
end
但是我担心这段代码的性能(有和没有急切加载相关模型)。是否有更好(更快)的方法呢?
答案 0 :(得分:2)
更好的方法是扩展关联:
has_many :phone_numbers do
def primary
where phone_numbers: { primary: true }
end
end
然后使用:
person.phone_numbers.primary