Commit b71e5cb98bde02014663ede3a635393f591975b9
1 parent
20649273
Exists in
master
and in
29 other branches
ActionItem514: refactored out the categorization functionality
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@2196 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
3 changed files
with
27 additions
and
21 deletions
Show diff stats
app/models/article_categorization.rb
@@ -3,18 +3,13 @@ class ArticleCategorization < ActiveRecord::Base | @@ -3,18 +3,13 @@ class ArticleCategorization < ActiveRecord::Base | ||
3 | belongs_to :article | 3 | belongs_to :article |
4 | belongs_to :category | 4 | belongs_to :category |
5 | 5 | ||
6 | - def self.add_category_to_article(category, article) | ||
7 | - connection.execute("insert into articles_categories (category_id, article_id) values(#{category.id}, #{article.id})") | 6 | + extend Categorization |
8 | 7 | ||
9 | - c = category.parent | ||
10 | - while !c.nil? && !self.find(:first, :conditions => {:article_id => article, :category_id => c}) | ||
11 | - connection.execute("insert into articles_categories (category_id, article_id, virtual) values(#{c.id}, #{article.id}, 1>0)") | ||
12 | - c = c.parent | 8 | + class << self |
9 | + alias :add_category_to_article :add_category_to_object | ||
10 | + def object_id_column | ||
11 | + :article_id | ||
13 | end | 12 | end |
14 | end | 13 | end |
15 | 14 | ||
16 | - def self.remove_all_for(article) | ||
17 | - self.delete_all(:article_id => article.id) | ||
18 | - end | ||
19 | - | ||
20 | end | 15 | end |
@@ -0,0 +1,17 @@ | @@ -0,0 +1,17 @@ | ||
1 | +module Categorization | ||
2 | + | ||
3 | + def add_category_to_object(category, object) | ||
4 | + connection.execute("insert into #{table_name} (category_id, #{object_id_column}) values(#{category.id}, #{object.id})") | ||
5 | + | ||
6 | + c = category.parent | ||
7 | + while !c.nil? && !self.find(:first, :conditions => {object_id_column => object, :category_id => c}) | ||
8 | + connection.execute("insert into #{table_name} (category_id, #{object_id_column}, virtual) values(#{c.id}, #{object.id}, 1>0)") | ||
9 | + c = c.parent | ||
10 | + end | ||
11 | + end | ||
12 | + | ||
13 | + def remove_all_for(object) | ||
14 | + self.delete_all(object_id_column => object.id) | ||
15 | + end | ||
16 | + | ||
17 | +end |
app/models/profile_categorization.rb
@@ -3,21 +3,15 @@ class ProfileCategorization < ActiveRecord::Base | @@ -3,21 +3,15 @@ class ProfileCategorization < ActiveRecord::Base | ||
3 | belongs_to :profile | 3 | belongs_to :profile |
4 | belongs_to :category | 4 | belongs_to :category |
5 | 5 | ||
6 | - def self.add_category_to_profile(category, profile) | ||
7 | - return if self.find_by_category_id_and_profile_id(category.id, profile.id) | ||
8 | - connection.execute("insert into categories_profiles (category_id, profile_id) values(#{category.id}, #{profile.id})") | 6 | + extend Categorization |
9 | 7 | ||
10 | - c = category.parent | ||
11 | - while !c.nil? && !self.find(:first, :conditions => {:profile_id => profile, :category_id => c}) | ||
12 | - connection.execute("insert into categories_profiles (category_id, profile_id, virtual) values(#{c.id}, #{profile.id}, 1>0)") | ||
13 | - c = c.parent | 8 | + class << self |
9 | + alias :add_category_to_profile :add_category_to_object | ||
10 | + def object_id_column | ||
11 | + :profile_id | ||
14 | end | 12 | end |
15 | end | 13 | end |
16 | 14 | ||
17 | - def self.remove_all_for(profile) | ||
18 | - self.delete_all(:profile_id => profile.id) | ||
19 | - end | ||
20 | - | ||
21 | def self.remove_region(profile) | 15 | def self.remove_region(profile) |
22 | region = profile.categories.find(:first, :conditions => "type = 'Region'") | 16 | region = profile.categories.find(:first, :conditions => "type = 'Region'") |
23 | if region | 17 | if region |