繁体   English   中英

在 Ruby on Rails 中,如何为“以前的记录”创建 has_many 关系?

[英]In Ruby on Rails, how can I create a has_many relation for "previous records"?

假设我有一个User模型和一个Contact模型。 我在user.rb类中有以下关系:

has_many :contacts
has_one :most_recent_contact, -> { order(created_at: :desc }

我看到了这个答案: https : //stackoverflow.com/a/38647605/1218280我开始思考:

如果我想添加一个has_many :previous_contacts关系怎么办?

因此,如果用户有 5 个联系人,则has_many :contacts将返回所有 5 个has_many :contacts的数组, has_one :most_recent_contact将返回一个联系人,而has_many :previous_contacts将返回一个包含 4 个联系人的数组。

当然,我可以通过以下方式低效地执行此操作:

def previous_contacts
  contacts - [most_recent_contact]
end

但我想知道我是否可以用has_many关系完成同样的事情,它读起来更好(对我来说)

想法?

您可以使用offset跳过第一条记录:

has_many :previous_contacts, -> { order(created_at: :desc).offset(1) } ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM