2015-11-22 94 views
0

假设我有Person模型,其中has_many模型与PhoneNumber模型关联。每个人都有几个电话号码,其中一个电话号码总是被设置为该人的主号码。我通过在PhoneNumber模型中添加primary布尔列来实现此目的。链接到来自关联模型的记录的虚拟模型属性

现在我想设法获得一个人的主号码。我已经添加下面的方法来Person模型

def primary_number 
    self.phone_numbers.each{ |n| return n if n.primary } 
    end 

但是我担心这段代码(有或无关联的模型的热切加载)的性能。有没有更好(更快)的方法来做到这一点?

回答

2

更好的办法是延长协会:

has_many :phone_numbers do 
    def primary 
    where phone_numbers: { primary: true } 
    end 
end 

,然后使用:

person.phone_numbers.primary 
相关问题