One aproach to make the randomness work with kaminari
This commit is contained in:
@@ -28,8 +28,8 @@ module Budgets
|
|||||||
respond_to :html, :js
|
respond_to :html, :js
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@investments = @investments.apply_filters_and_search(@budget, params, @current_filter)
|
@investments = investments.page(params[:page]).per(10).for_render
|
||||||
.send("sort_by_#{@current_order}").page(params[:page]).per(10).for_render
|
|
||||||
@investment_ids = @investments.pluck(:id)
|
@investment_ids = @investments.pluck(:id)
|
||||||
load_investment_votes(@investments)
|
load_investment_votes(@investments)
|
||||||
@tag_cloud = tag_cloud
|
@tag_cloud = tag_cloud
|
||||||
@@ -94,9 +94,7 @@ module Budgets
|
|||||||
|
|
||||||
def set_random_seed
|
def set_random_seed
|
||||||
if params[:order] == 'random' || params[:order].blank?
|
if params[:order] == 'random' || params[:order].blank?
|
||||||
params[:random_seed] ||= rand(99) / 100.0
|
params[:random_seed] ||= rand(9)
|
||||||
seed = Float(params[:random_seed]) rescue 0
|
|
||||||
Budget::Investment.connection.execute("select setseed(#{seed})")
|
|
||||||
else
|
else
|
||||||
params[:random_seed] = nil
|
params[:random_seed] = nil
|
||||||
end
|
end
|
||||||
@@ -131,6 +129,17 @@ module Budgets
|
|||||||
TagCloud.new(Budget::Investment, params[:search])
|
TagCloud.new(Budget::Investment, params[:search])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def investments
|
||||||
|
case @current_order
|
||||||
|
when 'random'
|
||||||
|
@investments.apply_filters_and_search(@budget, params, @current_filter)
|
||||||
|
.send("sort_by_#{@current_order}", params[:random_seed])
|
||||||
|
else
|
||||||
|
@investments.apply_filters_and_search(@budget, params, @current_filter)
|
||||||
|
.send("sort_by_#{@current_order}")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ class Budget
|
|||||||
scope :sort_by_confidence_score, -> { reorder(confidence_score: :desc, id: :desc) }
|
scope :sort_by_confidence_score, -> { reorder(confidence_score: :desc, id: :desc) }
|
||||||
scope :sort_by_ballots, -> { reorder(ballot_lines_count: :desc, id: :desc) }
|
scope :sort_by_ballots, -> { reorder(ballot_lines_count: :desc, id: :desc) }
|
||||||
scope :sort_by_price, -> { reorder(price: :desc, confidence_score: :desc, id: :desc) }
|
scope :sort_by_price, -> { reorder(price: :desc, confidence_score: :desc, id: :desc) }
|
||||||
scope :sort_by_random, -> { reorder("RANDOM()") }
|
scope :sort_by_random, ->(seed) { reorder("budget_investments.id % #{seed}, budget_investments.id") }
|
||||||
|
|
||||||
scope :valuation_open, -> { where(valuation_finished: false) }
|
scope :valuation_open, -> { where(valuation_finished: false) }
|
||||||
scope :without_admin, -> { valuation_open.where(administrator_id: nil) }
|
scope :without_admin, -> { valuation_open.where(administrator_id: nil) }
|
||||||
|
|||||||
Reference in New Issue
Block a user