在 Rails 上的 Ruby 中,如何为 "previous records" 创建 has_many 关系?

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

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

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

我看到了这个答案: 我开始思考:

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

因此,如果用户有 5 个联系人,has_many :contacts 将 return 所有 5 个联系人的数组,has_one :most_recent_contact 将 return 一个联系人,并且 has_many :previous_contacts 会 return 一个包含 4 个联系人的数组。

当然,我可以用类似的东西低效地做到这一点:

def previous_contacts
  contacts - [most_recent_contact]
end

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

想法?

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

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