【发布时间】:2017-08-09 15:08:22
【问题描述】:
我有一个关于 Rails 4.1 的问答论坛,带有一个反应客户端,用户可以在其中创建问题、答案和 cmets。我想使用活动模型序列化程序传递所有用户活动(无论类型如何)。理想情况下,这应该是一个按 created_at 排序的对象数组。我能够创建数组,但推送方法会相互覆盖。
我觉得我可能需要实际使用哈希来避免使用嵌套在单个对象数组中的属性的迷宫,但希望得到一些指导。
如果这没有意义,请考虑 Facebook 向您显示您最近的活动:
[
"You posted 'It's my birthday!' on 08/04/2017",
"You liked Tammy's post on 8/3/2017",
"You commented on Rihanna Tweets as Motivational Posters page on 8/1/2017"
]
user_activity 方法:
def user_activity
activity = []
self.object.questions.each do |question|
activity.push(question)
end
self.object.answers.each do |answer|
activity.push(answer)
end
self.object.comments.each do |comment|
activity.push(comment)
end
end
感谢和抱歉这个菜鸟问题。
【问题讨论】:
-
你的
user_activity必须在最后返回activity数组——另外,我认为在你的情况下使用 AM::Serializer 是多余的,因为你只想输出一个字符串(而不是序列化记录到特定对象中,例如哈希)。每个需要此用户活动兼容(= 字符串)输出的模型中包含的简单模块就足够了。我可以举例说明如何实现这一目标 -
哇!谢谢@MrYoshiji。我知道这是我忘记的愚蠢的事情。按预期工作!谢谢!
-
我认为我们现在已经与 AMS 结婚了,但我不介意额外的信息。我们实际上是在序列化非用户对象中的很多记录。
标签: ruby-on-rails active-model-serializers