Rails:依赖模型计算

时间:2017-02-11 20:28:37

标签: ruby-on-rails

希望:在图书/展览中,我希望看到每个图书馆的销售数量。

问题:目前我看到图书/节目中每个图书馆的所有销售数量,而不仅仅是本书的数量

我有3个型号:

Library (has_many :sales, has_many :books, through: :sales)

Sale (belongs_to :library, :book) (`book_id`, `library_id`, `quantity` fields)

Book (has_many :sales, has_many :libraries, through: :sales)

library.rb:

  def books_sold_quantity
    sales.map(&:quantity).sum
  end

BooksController中:

def show
    @libraries = @book.libraries
  end

预订/显示

BookID:
= @book.id
Library sales
%table
  %thead
    %tr
      %th LibraryID
      %th Books sold
  %tbody
    - @libraries.each do |library|
      %tr
        %td= library.id
        %td= library.books_sold_quantity

1 个答案:

答案 0 :(得分:0)

最简单的选择是

%%time
selector = RFECV(estimator, step=1, cv=5, n_jobs=4)
selector = selector.fit(X, y)

CPU times: user 3.42 s, sys: 312 ms, total: 3.74 s
Wall time: 11.8 s

但这会产生n + 1查询问题。

这里建议的是创建一个更高级的查询来获取控制器中的库。获取此书可用的所有库的查询,加入销售,并汇总所有销售数量。

它看起来像这样:

def amount_sold(book, library)
   Sale.where(book: book, library: library).sum(:quantity)
end