2016-07-28 38 views
0

我有一个带有密钥(域)的公司模型。我有一个也有一个域名的联系模式。来自has_many的最新has_one

我已经成功地在这两者之间建立了has_many关系。

has_many :contacts, class_name: 'Contact', primary_key: 'domain', foreign_key: 'domain' 

每个联系人都有一个date字段。我想要一个关系,从contacts关系中获得最近的联系人(通过date)。

这可能吗?

我知道我可以做这样的事情:

def most_recent_contact 
    contacts.order('date desc null last').first 
end 

这是最好的办法吗?是否导轨的方式?接受建议。

+1

你的意思是 - 最近对任意x接触'company'从联系关系? – kiddorails

+0

是的。因此,对于给定的公司,联系人集合将用于该公司(例如,在xyz.com上的所有联系人)。 – Nick

回答

1

好了,这似乎是一种方式,但它并没有“再利用”的关系(它重复的话)......

has_many :contacts, class_name: 'Contact', primary_key: 'domain', foreign_key: 'domain' 
has_one :most_recent_contact, -> { order date: :desc }, class_name: 'Contact', primary_key: 'domain', foreign_key: 'domain' 
+1

您的两种方法都可以获取这些信息。我真的很喜欢这个!您的结果数据库查询将保持不变:) – kiddorails

+0

谢谢。它使我不能教它使用has_many,因为它已经定义了类,主键和外键。 – Nick