2016-07-28 75 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