Rails 4 ActiveRecord的关联计数顺序

嗨嗨

我要在其中显示内容的视图

例如:

recipe.user.name 
recipe.name
recipe.picture
recipe.created_at

排序

recipe.likes.count

控制器:

@recipes_by_likes = Recipe.likes_count.paginate(page: params[:page])

模型:

Recipe has_many :likes

Like belongs_to :recipe

范围:

scope :likes_count, -> { 
  select('recipes.*, COUNT(likes.id) AS likes_count').
  joins(:likes).
  order('likes_count DESC')
}

但这给了我

SELECT  recipes.*, COUNT(likes.id) AS likes_count 
FROM "recipes" 
INNER JOIN "likes" ON "likes"."recipe_id" = "recipes"."id"  
ORDER BY "recipes"."created_at" DESC, likes_count DESC 
LIMIT 30 OFFSET 0

仅返回1(错误)结果。

我们

1.查询

您不应该按他们的喜欢来计数,id因为它总是唯一的,并且总是返回1,而不是按recipe_id与某个食谱相关的喜欢中的相同。

scope :likes_count, -> { 
  select('recipes.*, COUNT(likes.recipe_id) AS likes_count')
  .joins(:likes)
  .group('recipes.id')
  .order('likes_count DESC')
}

2.计数器缓存方法

您也可以使用 counter_cache

class Like < ActiveRecord::Base
  belongs_to :recipe, counter_cache: true
end

并添加一个Recipe模型

add_column :recipes, :likes_count, :integer, default: 0

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rails 3 ActiveRecord:顺序和按关联计数分组

来自分类Dev

Rails 4多个ActiveRecord关联

来自分类Dev

Rails 4:使用表单对象时验证关联的ActiveRecord模型

来自分类Dev

Rails 4:ActiveRecord删除调用上的删除关联列

来自分类Dev

关联条件Rails 4

来自分类Dev

关联条件Rails 4

来自分类Dev

构建关联 Rails 4

来自分类常见问题

禁用ActiveRecord for Rails 4

来自分类Dev

rails 4 ActiveRecord :: StatementInvalid

来自分类Dev

Rails 4 ActiveRecord :: AssociationTypeMismatch

来自分类Dev

Rails 4 ActiveRecord组

来自分类Dev

rails 4 ActiveRecord :: StatementInvalid

来自分类Dev

无法在Rails 4中按时间顺序订购ActiveRecord关系

来自分类Dev

Rails ActiveRecord按联接表关联计数排序

来自分类Dev

Rails 4,其中,顺序,组,计数包括零-Postgresql

来自分类Dev

Rails 4,其中,顺序,组,计数包括零-Postgresql

来自分类Dev

关于自引用has_many关联的空关联的Rails 4 ActiveRecord查询

来自分类Dev

从rails 3升级到rails 4时,has_many关联的顺序错误

来自分类Dev

Rails ActiveRecord关联

来自分类Dev

Rails 4:form_for与关联

来自分类Dev

Ruby on Rails 4中的关联

来自分类Dev

Rails 4,嵌套关联搜索

来自分类Dev

编写关联范围-Rails 4

来自分类Dev

Rails 4中的ActiveRecord :: AssociationTypeMismatch

来自分类Dev

Rails 4茧ActiveRecord :: AssociationTypeMismatch

来自分类Dev

Rails 4 ActiveRecord多个查询

来自分类Dev

Rails 4错误:ActiveRecord :: AssociationTypeMismatch

来自分类Dev

Rails 4-将ActiveRecord关联和输出作为JSON加载

来自分类Dev

Activerecord Rails 4执行类似于联接的操作,但仍会返回没有关联的行