我有以下用于存储活动项目的表格结构
id, trackable_id, trackable_type, owner_id, owner_type
其中trackable_id和trackable_type告诉我执行操作的对象(实体)。例如,如果id = 1的用户喜欢id = 1的图片
id, trackable_id, trackable_type, owner_id, owner_type
1, 1, Picture, 1, User
类似地,另一个用户可以喜欢相同的图片。在我的新闻Feed中,我可以轻松地显示用户执行的活动,但我想实现这样的目标:
John and katy likes Picture.
而不是
John likes Picture
Kay likes Picture.
我想要的方法是基于trackable_id和trackable_type做一个组,但它返回一行(group by的预期结果)。我之前没有使用过group_concat,它在这种情况下有用吗? 谢谢!
答案 0 :(得分:2)
答案 1 :(得分:0)
答案 2 :(得分:0)
看起来你正在使用polymorfic associations(如果没有 - 那么你应该使用它)。 您的方法如下所示:
def liked_by_string
user_names = users.collect(&:name).to_sentence # => "John, Katty, Mark and Pete"
"#{user_names} like the Picture"
end