Sha256: 04fb8391f2f0462352900928262cb711ce06f67e4c1e315589995fb0a4c4ab26
Contents?: true
Size: 1011 Bytes
Versions: 2
Compression:
Stored size: 1011 Bytes
Contents
module Ratable module Models module Rater extend ActiveSupport::Concern attr_reader :has_one module ActiveRecordExtension def acts_as_rater(options={has_one: false}) @has_one = options[:has_one] include Rater end end included do if @has_one has_one :rating, class_name: 'Ratable::Rating', dependent: :destroy, as: :rater else has_many :ratings, class_name: 'Ratable::Rating', dependent: :destroy, as: :rater end has_one :rating_summary, class_name: 'Ratable::RatingSummary', as: :rater end def ratees if @has_one rating.ratee else ratings.includes(:ratee).collect { |rating| rating.ratee } end end def rate(options={}) options.reject! { |k| k == :rater } if @has_one self.rating.create(options) else self.ratings.create(options) end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ratable-0.0.2 | lib/ratable/models/rater.rb |
ratable-0.0.1 | lib/ratable/models/rater.rb |