我想用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
答案 0 :(得分:2)
在字符串中搜索时,有4种可能性
所以这就是我认为查询看起来像
的方式@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
以确保我没有选错号码。