Module: SeemsRateable::Models::ActiveRecordExtension

Defined in:
lib/seems_rateable.rb,
lib/seems_rateable/models/active_record_extension.rb,
lib/seems_rateable/models/active_record_extension/rater.rb,
lib/seems_rateable/models/active_record_extension/rateable.rb

Defined Under Namespace

Modules: Rateable, Rater

Instance Method Summary collapse

Instance Method Details

#seems_rateable(*dimensions) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
# File 'lib/seems_rateable/models/active_record_extension.rb', line 4

def seems_rateable(*dimensions)
  has_many :_rates, -> { where dimension: nil }, as: :rateable, class_name: SeemsRateable::Rate, dependent: :destroy
  has_many :_raters, through: :_rates, source: :rater, dependent: :destroy

  dimensions.each do |dimension|
    has_many :"#{dimension}_rates", -> { where dimension: dimension }, as: :rateable, class_name: SeemsRateable::Rate, dependent: :destroy
    has_many :"#{dimension}_raters", through: :"#{dimension}_rates", source: :rater, dependent: :destroy
  end

  include Rateable
end

#seems_rateable_raterObject



16
17
18
19
20
# File 'lib/seems_rateable/models/active_record_extension.rb', line 16

def seems_rateable_rater
  has_many :rates_given, class_name: SeemsRateable::Rate, foreign_key: :rater_id

  include Rater
end