我想收集created_at <= Time.now
,status = 0
和dislikes < 3
的所有帖子。 created_at
和status
是Post
表中的列,但Dislike
是其自己的表。如何通过has_many访问查询中的不受欢迎程度(Post
和Dislike
已“关联”?
我现在有这个,它有效:
@posts = Post.where("created_at <= ? AND status = ?", Time.now, 0).order("created_at DESC")
如何在查询中包含不喜欢的内容?
(Dislike表格由:post_id
和:user_id
组成,我可以通过撰写@post.dislikes.count
来获取帖子中的不喜欢数量
答案 0 :(得分:1)
实现目标至少有两种方法:
在查询中使用having
@posts = Post.joins(:dislikes).
where("posts.created_at <= ? AND posts.status = ?", Time.now, 0).
group("posts.id").
order("posts.created_at DESC").
having("COUNT(dislikes.id) < 3")
使用计数器缓存列(在RailsCasts剧集中描述)
@posts = Post.
where("created_at <= ? AND status = ? AND dislikes_count < ?", Time.now, 0, 3).
order("created_at DESC")