来自has_many的最新has_one
问题描述:
我有一个带有密钥(域)的公司模型。我有一个也有一个域名的联系模式。来自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
这是最好的办法吗?是否导轨的方式?接受建议。
答
好了,这似乎是一种方式,但它并没有“再利用”的关系(它重复的话)......
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
你的意思是 - 最近对任意x接触'company'从联系关系? – kiddorails
是的。因此,对于给定的公司,联系人集合将用于该公司(例如,在xyz.com上的所有联系人)。 – Nick