lib/rating/models/rating/rate.rb in rating-0.1.0 vs lib/rating/models/rating/rate.rb in rating-0.2.0

- old
+ new

@@ -4,38 +4,39 @@ class Rate < ActiveRecord::Base self.table_name = 'rating_rates' after_save :update_rating - belongs_to :author , polymorphic: true - belongs_to :resource, polymorphic: true + belongs_to :author , polymorphic: true + belongs_to :resource , polymorphic: true + belongs_to :scopeable, polymorphic: true validates :author, :resource, :value, presence: true validates :value, numericality: { greater_than_or_equal_to: 1, less_than_or_equal_to: 100 } validates :author_id, uniqueness: { case_sensitive: false, - scope: %i[author_type resource_id resource_type] + scope: %i[author_type resource_id resource_type scopeable_id scopeable_type] } - def self.create(author:, resource:, value:) - record = find_or_initialize_by(author: author, resource: resource) + def self.create(author:, resource:, scopeable: nil, value:) + record = find_or_initialize_by(author: author, resource: resource, scopeable: scopeable) return record if record.persisted? && value == record.value record.value = value record.save record end - def self.rate_for(author:, resource:) - find_by author: author, resource: resource + def self.rate_for(author:, resource:, scopeable: nil) + find_by author: author, resource: resource, scopeable: scopeable end private def update_rating - ::Rating::Rating.update_rating resource + ::Rating::Rating.update_rating resource, scopeable end end end