В Ruby на Rails, как я могу создать отношение has_many для «предыдущих записей»? - PullRequest
0 голосов
/ 09 марта 2020

Допустим, у меня есть модель User и модель Contact. И у меня есть следующие отношения в классе user.rb:

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

Я видел этот ответ: { ссылка }, и я подумал:

Что если бы я хотел добавить отношение has_many :previous_contacts?

Так, если у пользователя было 5 контактов, has_many :contacts вернул бы массив всех 5, has_one :most_recent_contact вернул бы один контакт и has_many :previous_contacts вернет массив из 4 контактов.

Конечно, я могу сделать это неэффективно с помощью чего-то вроде:

def previous_contacts
  contacts - [most_recent_contact]
end

Но мне интересно, смогу ли я совершить sh то же самое с отношением has_many, которое читается лучше (для меня)

Мысли?

1 Ответ

1 голос
/ 09 марта 2020

Вы можете использовать offset, чтобы пропустить первую запись:

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