- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个项目,该项目与此问题有非常相似的困境: Ordering by number of associations in common (Rails)
所述询问的询问者(Neon)写道,
BACKGROUND: I have Posts and Users, and both have many Communities.
OBJECTIVE: For any given User I'd like to return a collection of Posts, ordered by how many communities the post has in common with the user (posts with more communities in-common being higher up)
遗憾的是,该解决方案仅包含至少具有一个共同社区的帖子。我的困惑需要包括按公共(public)社区数量排序的所有帖子。
扩展目标:结果必须是一个 AREL 对象,其中所有个帖子按共同社区的数量排序,包括与用户有零个共同社区的帖子(帖子高层有更多共同社区)。
最佳答案
如果您需要包含与用户共有的社区为零的帖子,您可以使用LEFT JOIN
。要清理在 join
条件中发送的参数,我们可以在类方法中定义它,以便 sanitize_sql_array
方法可用:
# Post class
def self.community_counts(current_user)
current_user.posts.joins(sanitize_sql_array(["LEFT JOIN community_posts ON community_posts.post_id = posts.id AND community_posts.community_id IN (?)", current_user.community_ids])).select("posts.*, COUNT(DISTINCT community_posts.community_id) AS community_count").group("posts.id").order("community_count DESC")
end
<小时/>
其他信息
INNER JOIN
返回两个表之间的交集。 LEFT JOIN
返回左表(在本例中为 posts
)中的所有行,并返回右表(community_posts
)中的匹配行,但是当没有匹配项时(没有与用户社区匹配的社区的帖子),它还会在右侧返回 NULL
。请参阅this answer供说明。
据我所知,Rails 没有提供任何辅助方法来生成LEFT JOIN
。我们必须为这些写出 SQL。
LEFT JOIN
与 LEFT OUTER JOIN
( more info ) 相同。
关于mysql - 按共同关联的数量排序,即使没有(rails),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30446662/
所以,我有一个类似于 this one 的用例,但我觉得有一些额外的细节值得提出一个新问题。 ( related questions ,供引用) 我正在编写一个实现 a cycle 的数据结构.基本设
我正在使用 Django 编写一个社交网络应用程序,需要实现类似于 Facebook“Mutual Friends”概念的功能。我有一个像这样的简单模型: class Friend(models.Mo
我有一个 iOS 应用程序,用户可以在其中使用 Facebook 登录并授予 user_friends 权限。从 Graph API 2.0 开始,Facebook 声称你无法获取两个人之间所有的共同
我想知道将来对我来说最简单的方法是什么,可以使查询既有效又不那么复杂。 我应该像这样保存双向关系吗 from_id=1, to_id=2from_id=2, to_id=1 或者只创建一个唯一的行 f
我是一名优秀的程序员,十分优秀!