Rails /活动记录,按关联顺序排序/ has_many计数

轨道

我有一些书,他们可以通过另一个表格关联许多主题。

class Book < ActiveRecord::Base
  has_many :book_topics, dependent: :destroy
  has_many :topics, through: :book_topics
end

然后,我有一个助手列出所有主题,但我想按具有该主题的书籍数量列出要排序的主题。

我尝试了以下形式的变体:

def topic_list
  Topic.joins(:book_topics)
       .group("book_topics.topic_id")
       .order("count(book_topics.book_id) desc")
end

没有运气。

罗迪奇

认为执行此操作的正确方法是实现计数器缓存

在book_topic.rb中,您将拥有

class BookTopic < ActiveRecord::Base
  belongs_to :topic, counter_cache: true
end

topic.rb应该保持不变

class Topic < ActiveRecord::Base
  has_many :book_topics, dependent: :destroy
end

但是,您必须将计数器列添加到主题表

class AddBookTopicsCountToTopics < ActiveRecord::Migration
  def change
    add_column :topics, :book_topics_count, :integer, default: 0
  end
end

迁移它,如果您有现有记录,请更新counter val,从那里可以轻松按主题的书数对主题进行排序。

我意识到您想通过查询来解决此问题,但是根据我的经验,这应该更快。

如有错误,请耐心等待。计数器名称不是最好的,但是在文档中有一个示例如何更改它。如果还不够的话,还有一个railscast vid。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rails-活动记录:查找所有具有某些属性的has_many关联计数的记录

来自分类Dev

Rails has_many:通过验证嵌套记录按特定参数计数

来自分类Dev

Rails活动记录查询:仅呈现has_many关系中的最新子对象(按子created_at日期排序)

来自分类Dev

rails pluck has_many 通过计数

来自分类Dev

Has_many rails关联=> NoMethodError

来自分类Dev

Rails 5 可选的 has_many 关联

来自分类Dev

Rails 4:通过has_many关联创建新记录

来自分类Dev

Ruby on Rails has_many -- 为单个记录创建关联

来自分类Dev

Rails 4活动记录模型has_many通过关联吗?

来自分类Dev

Rails 4活动记录模型has_many通过关联吗?

来自分类Dev

通过has_many关系与Rails 3 /活动记录/ postgresql中的条件进行排序

来自分类Dev

Rails中的has_one和has_many关联

来自分类Dev

Rails关联has_many和has_many通过相同的STI模型

来自分类Dev

基于关联表中的记录计数的has_many表格

来自分类Dev

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

来自分类Dev

Rails的按关联顺序排序

来自分类Dev

Rails的按关联顺序排序

来自分类Dev

Rails关联has_many通过代替HABTM

来自分类Dev

Rails,如何通过删除has_many中的关联

来自分类Dev

奇怪的问题has_many通过更新的Rails中的关联

来自分类Dev

Rails:ActiveRecord has_many关联不起作用

来自分类Dev

Rails:用户has_many CityPreferences模型关联

来自分类Dev

has_many的Rails触摸链:通过关联

来自分类Dev

通过has_many关联进行Rails作用域

来自分类Dev

Rails has_many但在关联模型的列上是唯一的

来自分类Dev

rails 4 has_many:通过不保存关联

来自分类Dev

Rails:has_many关联中的AND运算符

来自分类Dev

Rails使用“ has_many”关联生成模型

来自分类Dev

Rails 5 Postgresql has_many通过关联

Related 相关文章

  1. 1

    Rails-活动记录:查找所有具有某些属性的has_many关联计数的记录

  2. 2

    Rails has_many:通过验证嵌套记录按特定参数计数

  3. 3

    Rails活动记录查询:仅呈现has_many关系中的最新子对象(按子created_at日期排序)

  4. 4

    rails pluck has_many 通过计数

  5. 5

    Has_many rails关联=> NoMethodError

  6. 6

    Rails 5 可选的 has_many 关联

  7. 7

    Rails 4:通过has_many关联创建新记录

  8. 8

    Ruby on Rails has_many -- 为单个记录创建关联

  9. 9

    Rails 4活动记录模型has_many通过关联吗?

  10. 10

    Rails 4活动记录模型has_many通过关联吗?

  11. 11

    通过has_many关系与Rails 3 /活动记录/ postgresql中的条件进行排序

  12. 12

    Rails中的has_one和has_many关联

  13. 13

    Rails关联has_many和has_many通过相同的STI模型

  14. 14

    基于关联表中的记录计数的has_many表格

  15. 15

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

  16. 16

    Rails的按关联顺序排序

  17. 17

    Rails的按关联顺序排序

  18. 18

    Rails关联has_many通过代替HABTM

  19. 19

    Rails,如何通过删除has_many中的关联

  20. 20

    奇怪的问题has_many通过更新的Rails中的关联

  21. 21

    Rails:ActiveRecord has_many关联不起作用

  22. 22

    Rails:用户has_many CityPreferences模型关联

  23. 23

    has_many的Rails触摸链:通过关联

  24. 24

    通过has_many关联进行Rails作用域

  25. 25

    Rails has_many但在关联模型的列上是唯一的

  26. 26

    rails 4 has_many:通过不保存关联

  27. 27

    Rails:has_many关联中的AND运算符

  28. 28

    Rails使用“ has_many”关联生成模型

  29. 29

    Rails 5 Postgresql has_many通过关联

热门标签

归档