![](/img/trans.png)
[英]In rails, how can I create a merged relation between two has_many :through relations
[英]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.