多个活动接收者

时间:2015-03-28 20:08:02

标签: ruby-on-rails ruby-on-rails-4

我想用this (public_activity) gem创建新闻源。有一个recipient_id列,用于一个活动接收者。但是,在大多数情况下,我有多个收件人(例如,向特定记录后的所有人显示活动) - 收件人的数量可以超过100,这是一次创建并显示的许多单独记录。

这样做的最佳方式是什么?

我找到this suggestion,虽然我无法让它工作但我遇到了很多错误。

一种解决方案可能是创建自定义列

t.text :user_recipients

存储应该获取活动的用户的ID(例如,因为他们可能正在关注特定记录)。然后,检查current_user.id是否属于该组数字。那组数字(“1,3,4”)将首先转换为数组([1,3,4]),我们可以使用{{1 }}

这是一个很好的方法吗?

此外,不会显示具有空array.include?(current_user.id)列的记录。

最后,我们应该得到这样的结论:

user_recipients

1 个答案:

答案 0 :(得分:2)

在字符串中搜索时,有4种可能性

  • id位于字段的开头 例如:“id,2,3”
  • id位于字段的最后 例如:“1,2,id”
  • id位于字段中间 例如:“1,id,3”
  • id是字段中唯一的数字
    ex“id”

所以这就是我认为查询看起来像

的方式
@activities = PublicActivity::Activity.where(
  "user_recipients LIKE ':id,%' or 
   user_recipients LIKE '%, :id' or
   user_recipients LIKE '%, :id,%' or
   user_recipients = ':id'", id: current_user.id)

我不能做一个简单的LIKE %id%的原因是这会匹配部分数字,这意味着id = 5将匹配[1, 10, 15],尽管没有5,但{ {1}}确实匹配,因此我需要检查逗号15以确保我没有选错号码。