【发布时间】:2015-07-06 21:30:50
【问题描述】:
我有以下 Rails ActiveRecord 关联,其中一课有_许多书,书本属于一课。我想运行一个 SQL 命令,它会告诉我有多少课有多本书属于该课。
例如:第 1 课有第 1 册和第 2 册,我想看看发生了多少次。
【问题讨论】:
标签: sql ruby-on-rails ruby postgresql ruby-on-rails-4
我有以下 Rails ActiveRecord 关联,其中一课有_许多书,书本属于一课。我想运行一个 SQL 命令,它会告诉我有多少课有多本书属于该课。
例如:第 1 课有第 1 册和第 2 册,我想看看发生了多少次。
【问题讨论】:
标签: sql ruby-on-rails ruby postgresql ruby-on-rails-4
Book.group(:lesson_id).count 将返回一个散列,其中lesson_id 作为键,书的数量作为值。
您还可以按照第 4.1.2.3 节中的here 所述实现counter_cache
【讨论】:
就像第一个答案所说,计数器缓存或使用组和计数是简单获取计数的最佳方法。
但是,如果您想实际输出属于课程的书名,而不仅仅是控制台或视图中的计数,您可以执行类似的操作:
Lesson.all.each do |lesson|
puts lesson.books.map { |b| b.name }.join(", ")
end
【讨论】: