added filter criteria models

This commit is contained in:
Edin Dazdarevic
2015-02-07 14:48:02 +01:00
parent 0bb6bb5a49
commit ead0e87e31
25 changed files with 240 additions and 6 deletions

View File

@@ -0,0 +1,20 @@
get '/filter/section/:id' do |id_s|
# get filter criteria for a section with id
FilterCriteria.where(:owner_type => "Section").where(:owner_id => id_s.to_i).to_json(
:include => [:filter_criteria_values]
)
end
get '/filter/category/:id' do |id_s|
# get filter criteria for a category with id
FilterCriteria.where(:owner_type => "Category").where(:owner_id => id_s.to_i).to_json(
:include => [:filter_criteria_values]
)
end
get '/filter/subcategory/:id' do |id_s|
# get filter criteria for a subcategory with id
FilterCriteria.where(:owner_type => "Subcategory").where(:owner_id => id_s.to_i).to_json(
:include => [:filter_criteria_values]
)
end

View File

@@ -0,0 +1,11 @@
class CreateFilterCriteria < ActiveRecord::Migration
def change
create_table :filter_criteria do |t|
t.string :title
t.string :field_name
t.integer :type # list, checkbox list
t.string :owner_type # section, cat, subcat
t.integer :owner_id
end
end
end

View File

@@ -0,0 +1,9 @@
class CreateFilterCriteriaValues < ActiveRecord::Migration
def change
create_table :filter_criteria_values do |t|
t.string :filter_text
t.string :filter_value
t.integer :filter_criteria_id
end
end
end

View File

@@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20150206041455) do
ActiveRecord::Schema.define(version: 20150207120207) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -30,6 +30,20 @@ ActiveRecord::Schema.define(version: 20150206041455) do
t.string "image_url"
end
create_table "filter_criteria", force: :cascade do |t|
t.string "title"
t.string "field_name"
t.integer "type"
t.integer "owner_type"
t.integer "owner_id"
end
create_table "filter_criteria_values", force: :cascade do |t|
t.string "filter_text"
t.string "filter_value"
t.integer "filter_criteria_id"
end
create_table "item_in_carts", force: :cascade do |t|
t.integer "cart_id"
t.integer "item_id"
@@ -72,10 +86,8 @@ ActiveRecord::Schema.define(version: 20150206041455) do
end
create_table "sub_categories", force: :cascade do |t|
t.string "name"
t.integer "category_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "name"
t.integer "category_id"
end
create_table "units", force: :cascade do |t|

View File

@@ -1,4 +1,5 @@
class Category < ActiveRecord::Base
has_many :sub_categories
has_many :filter_criterias, as: :owner
belongs_to :section
end

View File

@@ -0,0 +1,9 @@
class FilterCriteria < ActiveRecord::Base
has_many :filter_criteria_values
belongs_to :owner, polymorphic: true
self.inheritance_column = :_type_disabled
def owner_type=(class_name)
super(class_name.constantize.base_class.to_s)
end
end

View File

@@ -0,0 +1,3 @@
class FilterCriteriaValue < ActiveRecord::Base
belongs_to :filter_criteria
end

View File

@@ -1,3 +1,4 @@
class Section < ActiveRecord::Base
has_many :categories
has_many :filter_criterias, as: :owner
end

View File

@@ -1,5 +1,6 @@
class SubCategory < ActiveRecord::Base
belongs_to :category
has_many :filter_criterias, as: :owner
end