rails activerecord - 独特的计数器缓存实现

时间:2017-07-19 21:08:36

标签: ruby-on-rails activerecord

我有这些表格:

broadcast id name

email id broadcast_id user_id subject

email_open id email_id user_id

我想在broadcast表中保留email_open记录的计数。

通过在broadcast_id表中添加email_open,这是最有效的方法吗?如果是..那么我知道我可以在我的email_open模型中执行此操作:

belongs_to :broadcast, counter_cache: => true

然后,我在我的广播表中添加email_open_count ...但我想知道是否有办法不这样做。

此外,多个用户可以在email_open中重复记录。如何使计数具有明显的user_id

例如,user_id 1可以打开5次电子邮件,但我只想让email_open_count为1。

由于

1 个答案:

答案 0 :(得分:0)

  

因此,根据您的示例,如果user_id 1可以打开电子邮件5次,但您只需要将email_open_count设置为1.您可以使用相同的user_id发送电子邮件,或者只有当该用户打开电子邮件但是用户已经打开,请不要再次保存。