feat: add tables name config
parent
754aaca0e8
commit
ab9610bfe0
|
@ -1,8 +1,18 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module Rating
|
module Rating
|
||||||
|
class << self
|
||||||
|
def config
|
||||||
|
@config ||= Config.new
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def configure
|
||||||
|
yield config
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
require 'rating/config'
|
||||||
require 'rating/models/rating/extension'
|
require 'rating/models/rating/extension'
|
||||||
require 'rating/models/rating/rate'
|
require 'rating/models/rating/rate'
|
||||||
require 'rating/models/rating/rating'
|
require 'rating/models/rating/rating'
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module Rating
|
||||||
|
class Config
|
||||||
|
attr_accessor :rate_model, :rating_model
|
||||||
|
|
||||||
|
def models(rate: nil, rating: nil)
|
||||||
|
@rate_model = rate unless rate.nil?
|
||||||
|
@rating_model = rating unless rating.nil?
|
||||||
|
|
||||||
|
self
|
||||||
|
end
|
||||||
|
|
||||||
|
def initialize
|
||||||
|
@rate_model = ::Rating::Rate
|
||||||
|
@rating_model = ::Rating::Rating
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
module Rating
|
module Rating
|
||||||
class Rating < ActiveRecord::Base
|
class Rating < ActiveRecord::Base
|
||||||
self.table_name = 'rating_ratings'
|
self.table_name = ::Rating.config.rating_model
|
||||||
|
|
||||||
belongs_to :resource, polymorphic: true
|
belongs_to :resource, polymorphic: true
|
||||||
belongs_to :scopeable, polymorphic: true
|
belongs_to :scopeable, polymorphic: true
|
||||||
|
@ -107,7 +107,7 @@ module Rating
|
||||||
end
|
end
|
||||||
|
|
||||||
def rate_table_name
|
def rate_table_name
|
||||||
@rate_table_name ||= Rate.table_name
|
@rate_table_name ||= ::Rating.config.rate_model
|
||||||
end
|
end
|
||||||
|
|
||||||
def scope_type_query(scopeable)
|
def scope_type_query(scopeable)
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe Rating::Config, 'initialize' do
|
||||||
|
it 'has default models' do
|
||||||
|
expect(subject.rate_model).to eq ::Rating::Rate
|
||||||
|
expect(subject.rating_model).to eq ::Rating::Rating
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,12 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe Rating::Config, 'models' do
|
||||||
|
it 'changes the rating models' do
|
||||||
|
subject.models rate: Review, rating: ReviewRating
|
||||||
|
|
||||||
|
expect(subject.rate_model).to eq Review
|
||||||
|
expect(subject.rating_model).to eq ReviewRating
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,17 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class CreateReviewRatingsTable < ActiveRecord::Migration[5.0]
|
||||||
|
def change
|
||||||
|
create_table :review_ratings do |t|
|
||||||
|
t.decimal :average, default: 0, mull: false, precision: 25, scale: 16
|
||||||
|
t.decimal :estimate, default: 0, mull: false, precision: 25, scale: 16
|
||||||
|
t.integer :sum, default: 0, mull: false
|
||||||
|
t.integer :total, default: 0, mull: false
|
||||||
|
|
||||||
|
t.references :resource, index: true, null: false, polymorphic: true
|
||||||
|
t.references :scopeable, index: true, null: true, polymorphic: true
|
||||||
|
|
||||||
|
t.timestamps null: false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,15 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class CreateReviewsTable < ActiveRecord::Migration[5.0]
|
||||||
|
def change
|
||||||
|
create_table :reviews do |t|
|
||||||
|
t.decimal :value, default: 0, precision: 25, scale: 16
|
||||||
|
|
||||||
|
t.references :author, index: true, null: false, polymorphic: true
|
||||||
|
t.references :resource, index: true, null: false, polymorphic: true
|
||||||
|
t.references :scopeable, index: true, null: true, polymorphic: true
|
||||||
|
|
||||||
|
t.timestamps null: false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -10,4 +10,6 @@ CreateAuthorsTable.new.change
|
||||||
CreateCategoriesTable.new.change
|
CreateCategoriesTable.new.change
|
||||||
CreateRateTable.new.change
|
CreateRateTable.new.change
|
||||||
CreateRatingTable.new.change
|
CreateRatingTable.new.change
|
||||||
|
CreateReviewRatingsTable.new.change
|
||||||
|
CreateReviewsTable.new.change
|
||||||
AddCommentOnRatingRatesTable.new.change
|
AddCommentOnRatingRatesTable.new.change
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class Review < ::ActiveRecord::Base
|
||||||
|
end
|
|
@ -0,0 +1,4 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class ReviewRating < ::ActiveRecord::Base
|
||||||
|
end
|
Loading…
Reference in New Issue