0

ページ分割された表に一緒に表示したい 4 種類の Rawscores があります。

コードは次のようになります。

@facebook_scores_today = Rawscore.where(:channel_string => "Facebook", :project => @project, :created_at.gt => Time.now.beginning_of_day)

@youtube_scores_today = Rawscore.where(:channel_string => "Youtube", :project => @project, :created_at.gt => Time.now.beginning_of_day)

@twitter_scores_today = Rawscore.where(:channel_string => "Twitter", :project => @project, :created_at.gt => Time.now.beginning_of_day)

@influence_scores_today = Rawscore.where(:channel_string => "Influence", :project => @project, :created_at.gt => Time.now.beginning_of_day)

Rawscore には、 に依存するテーブルの属性として複数の値を持つハッシュがあります:channel_string

これについてどうすればよいですか?「will_paginate」または「kaminari」に役立つ宝石はありますか?

更新(これが私のRawscoreモデルです)

class Rawscore
  include Mongoid::Document
  include Mongoid::Timestamps::Created #for created_at field

  belongs_to :channel
  belongs_to :project
  field :values, type: Hash
  validates :values, :presence => true

end

Rawscore モデルで :values ハッシュのキーと値を表示したいと考えています。

4

2 に答える 2

1

Kaminari は配列のページ付けを行うことができますが、アクティブ レコードは取得したすべてのレコードをインスタンス化するため、効率的ではありません (つまり、10000 件のレコードがあり、100 件だけを表示したい場合、メモリには 10000 個の AR オブジェクトが存在することになります)。

Kaminari.paginate_array(my_array_object).page(params[:page]).per(10)

代わりに、クエリを結合し、クエリでページネーションすることを検討できます

scores_today = Rawscore.where(
  :channel_string => ["Facebook", "Youtube", "Twitter", "Influence"], 
  :project => @project, :created_at.gt => Time.now.beginning_of_day
).page(params[:page])
于 2013-05-31T08:40:47.557 に答える