Class: CustomSort::RelationBuilder
- Inherits:
-
Object
- Object
- CustomSort::RelationBuilder
- Defined in:
- lib/custom_sort/relation_builder.rb
Instance Attribute Summary collapse
-
#column ⇒ Object
readonly
, :period.
-
#label ⇒ Object
readonly
, :period.
-
#query_name ⇒ Object
readonly
, :period.
-
#recency_key ⇒ Object
readonly
, :period.
Instance Method Summary collapse
- #generate ⇒ Object
-
#initialize(relation, column:, query_name:, recency_key:, label: nil, sort_order: "DESC", recent: true) ⇒ RelationBuilder
constructor
def initialize(relation, column:, period:, time_zone:, time_range:, week_start:, day_start:, n_seconds:).
Constructor Details
#initialize(relation, column:, query_name:, recency_key:, label: nil, sort_order: "DESC", recent: true) ⇒ RelationBuilder
def initialize(relation, column:, period:, time_zone:, time_range:, week_start:, day_start:, n_seconds:)
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/custom_sort/relation_builder.rb', line 7 def initialize(relation, column:, query_name:, recency_key:, label: nil, sort_order: "DESC", recent: true) @relation = relation @column = resolve_column(relation, column) unless column.nil? @query_name = query_name @table_name = resolve_table(relation) #"items" @class_name = resolve_class(relation) @recent = recent == false ? recent : true @lambda_key = recency_key #2 @sort_order = sort_order @label = label #label.nil? ? CustomSort::LABELS[0].to_s : label #if relation.default_timezone == :local # raise CustomSort::Error, "ActiveRecord::Base.default_timezone must be :utc to use Groupdate" #end end |
Instance Attribute Details
#column ⇒ Object (readonly)
, :period
3 4 5 |
# File 'lib/custom_sort/relation_builder.rb', line 3 def column @column end |
#label ⇒ Object (readonly)
, :period
3 4 5 |
# File 'lib/custom_sort/relation_builder.rb', line 3 def label @label end |
#query_name ⇒ Object (readonly)
, :period
3 4 5 |
# File 'lib/custom_sort/relation_builder.rb', line 3 def query_name @query_name end |
#recency_key ⇒ Object (readonly)
, :period
3 4 5 |
# File 'lib/custom_sort/relation_builder.rb', line 3 def recency_key @recency_key end |
Instance Method Details
#generate ⇒ Object
25 26 27 28 29 30 31 32 33 34 |
# File 'lib/custom_sort/relation_builder.rb', line 25 def generate #@relation.group(group_clause).where(*where_clause) case query_name when "nojoin" @relation.select(net_score_col).select(time_decay_col).where(*where_clause).order(order_clause) else @relation.select(net_score_col).select(time_decay_col).joins(join_clause).where(*where_clause).order(order_clause) end end |