在关联Rails中的多个记录中选择特定记录

时间:2017-08-31 12:49:27

标签: mysql ruby-on-rails ruby email activerecord

我有一个名为用户的模型和关联的模型消息。因此用户可以拥有许多消息。我在消息表中有4列名为sent_atopened_atclicked_atemail id

在留言表email id中并不是唯一的。用户可能会发送多封电子邮件。因此,对于消息表中的用户,他可以多次看到相同的电子邮件。

例如:如果user_id为7,我需要使用该关联找出最近打开的电子邮件。我需要最近打开邮件的所有用户的记录。

我用过这个:

User.find(7).messages.select(*).group(:email_id).having("max(opened_at)")

但它给了男人错误。

任何帮助都非常感谢!!在此先感谢!!

1 个答案:

答案 0 :(得分:0)

经过大量研究后我得到了答案

a = User.find(7).messages.order("opened_at,clicked_at”).group_by(&:email_id)

这将返回哈希值。我将使用a.to_a将其转换为数组,然后我可以访问整个活动记录