首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按日期订购的用户的两个模型关联

按日期订购的用户的两个模型关联
EN

Stack Overflow用户
提问于 2014-10-14 13:26:17
回答 2查看 31关注 0票数 1

我有一个用户谁可以张贴主题和留下评论。我让他们的默认作用域按日期返回。

我想在这里按日期向所有用户展示主题和评论。

示例:

  • 专题10/4
  • 专题10/2
  • 意见10/3
  • 意见10/1

将成为:

  • 专题10/4
  • 意见10/3
  • 专题10/2
  • 意见10/1

做这件事最好的方法是什么?除:

代码语言:javascript
复制
@variable = user.comments + user.topics
@variable.sort_by &:created_at    
@variable.reverse!
EN

回答 2

Stack Overflow用户

发布于 2014-10-14 13:58:31

我在这里看到了两种选择。一个是编写纯SQL,它看起来比“三行解决方案”要难看得多。另一种方法是创建一个新的AR模型,如

代码语言:javascript
复制
class UserForumActivities < ActiveRecord::Base
   self.table_name='user_forum_activities' # this is a name of psql view
end

看上去就像

代码语言:javascript
复制
class CreateSomeView < ActiveRecord::Migration
 def self.up
    execute %q{
    CREATE OR REPLACE VIEW user_forum_activities AS
    SELECT "comments.desired_fields", "topics.desired_fields"
    FROM "comments", "topics"
    INNER JOIN "users" ON "foreign_keys"
    WHERE "appriopriate conditions if needed"
    ORDER BY created_at;
    }
  end
end

然后,在您的控制器中,您可以像这样使用它:

代码语言:javascript
复制
@variable = UserForumActivities.scoped_to_user_with_id(user.id)

因此,我们得到一行而不是三行,您可以让数据库为您处理逻辑(db通常比Ruby更快)。希望这会有所帮助,我也很好奇是否有人有更好的解决方案:-)

票数 0
EN

Stack Overflow用户

发布于 2014-10-14 14:00:29

这可以像活动流一样得到解决。您可以创建一个名为activity的独立模型,并与其他实体建立关系。当用户做一些事情,比如添加新注释或新主题时,它也应该保存在活动中。活动应该有这些模型的外键(主题、注释、.)好让他们稍后再来。最后,只需对活动进行排序并加载对象(主题、注释、..)然后表现出来。

有一个很好的教程,说明了如何做到这一点,但不幸的是,它不是免费的:http://railscasts.com/episodes/407-activity-feed-from-scratch

还有一个很好的创业板public_activity可以解决这个问题。有一个教程,如何做到这一点(免费的):http://railscasts.com/episodes/406-public-activity?view=asciicast

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26362038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档