【发布时间】:2015-03-28 20:08:01
【问题描述】:
我想使用this (public_activity) gem 创建新闻源。有一个 recipient_id 列,用于活动的一个接收者。但是,在大多数情况下,我有多个收件人(例如,向所有关注特定记录的人显示活动)- 收件人的数量可能超过 100 个,这是一次创建和显示的大量单独记录。
最好的方法是什么?
我找到了this suggestion,虽然我无法让它工作并且我得到了很多错误。
一种解决方案可能是创建一个自定义列
t.text :user_recipients
应获取活动的用户的存储 ID(例如,因为他们可能正在关注特定记录)。然后,检查 current_user.id 是否属于那组数字。这组数字 ("1, 3, 4") 将首先被转换为数组 ([1, 3, 4]) 我们可以使用array.include?(current_user.id)
这是一个好方法吗?
此外,user_recipients 列为空的记录也不会显示。
最后,我们应该得到这样的结果:
@activities = PublicActivity::Activity.where(/records where current_user.id belongs to user_recipients array/ + /column is not empty/)
【问题讨论】:
-
你能解释一下你的模型结构吗
-
具体是什么型号?
-
user_recipents这是什么型号的?为什么是文本而不是单独的表格? -
哦,那应该是活动表中的 custom_column - github.com/pokonski/public_activity#migration - 它将存储应该获取活动的用户的 ID。你会怎么做 - 有没有更有效和更好的方法?
-
好的,我现在明白了,我还没有阅读 gem README,但是这个接收者关系不能是一个表,这个当前的方法有点糟糕,唯一的方法是稍微多一点有效的方法是使用
like在字段中进行文本搜索
标签: ruby-on-rails ruby-on-rails-4