module SelfRateable::Rateable
Public Instance Methods
self_rateable(options)
click to toggle source
# File lib/self_rateable/rateable.rb, line 3 def self_rateable(options) ops = validate_opts(options) class_eval do add_associations(ops[:by]) include "SelfRateable::Core::InstanceMethods::#{ops[:type].to_s.camelize}".constantize include "SelfRateable::Core::ClassMethods::#{ops[:type].to_s.camelize}".constantize end end
Private Instance Methods
add_associations(rated_by)
click to toggle source
# File lib/self_rateable/rateable.rb, line 14 def add_associations(rated_by) has_many :ratings, as: :rateable, dependent: :destroy, class_name: 'SelfRateable::Rating' has_one :rater, as: :rater, class_name: rated_by.to_s.camelize end
validate_opts(options)
click to toggle source
# File lib/self_rateable/rateable.rb, line 19 def validate_opts(options) raise 'Incorect specification of self_rateable in your model please check documentation' if options[:type].blank? && options[:by].blank? raise 'Incorect specification of self_rateable in your model please check documentation' if options[:by].blank? options[:type].blank? ? {by: options[:by], type: 'likes'} : options end