From 8a91291f3e6e1851aaffd98df6d0258c5e762e90 Mon Sep 17 00:00:00 2001
From: Mauricio Giacomini Girardello <mgg12@inf.ufpr.br>
Date: Wed, 17 Feb 2016 11:08:16 -0200
Subject: [PATCH] refactoring class methods for scopes concepts and add import
 topics task

---
 app/controllers/learning_objects_controller.rb    |  3 +--
 app/models/topic.rb                               |  7 +------
 ...0217122253_create_default_column_for_topics.rb |  5 +++++
 lib/tasks/topics.rake                             | 15 +++++++++++++++
 4 files changed, 22 insertions(+), 8 deletions(-)
 create mode 100644 db/migrate/20160217122253_create_default_column_for_topics.rb
 create mode 100644 lib/tasks/topics.rake

diff --git a/app/controllers/learning_objects_controller.rb b/app/controllers/learning_objects_controller.rb
index 2c463af5..90547b9f 100644
--- a/app/controllers/learning_objects_controller.rb
+++ b/app/controllers/learning_objects_controller.rb
@@ -4,7 +4,6 @@ class LearningObjectsController < ApplicationController
   include Reportable
 
   before_action :authenticate_user!, except: [:index, :show]
-
   before_action :set_learning_object, only: [:show, :edit, :update,
                                              :destroy, :like, :bookmarks,
                                              :collections, :upload, :upload_link, :download]
@@ -21,7 +20,7 @@ class LearningObjectsController < ApplicationController
   def new
     @learning_object = LearningObject.new
     @school_levels = ['Educação Infantil', 'Ensino Fundamental', 'Ensino Médio']
-    @subjects = Topic.all.map{|x| x.name}.uniq
+    @subjects = Topic.defaults
     @types = LearningObject.default_types
     @languages = Language.all
   end
diff --git a/app/models/topic.rb b/app/models/topic.rb
index deb70dd6..75c0c3a8 100644
--- a/app/models/topic.rb
+++ b/app/models/topic.rb
@@ -10,10 +10,5 @@ class Topic < ActiveRecord::Base
   validates_presence_of :name
   validates_uniqueness_of :name
 
-  def self.default_list
-    ['Artes', 'Biologia', 'Ciências', 'Educação Física', 'Filosofia',
-     'Física', 'Geografia', 'História', 'Matemática', 'Língua Portuguesa', 'Química', 'Sociologia'].map do |topic|
-      Topic.find_by_name(topic)
-    end
-  end
+  scope :defaults, -> { where(default: true) }
 end
diff --git a/db/migrate/20160217122253_create_default_column_for_topics.rb b/db/migrate/20160217122253_create_default_column_for_topics.rb
new file mode 100644
index 00000000..e638daba
--- /dev/null
+++ b/db/migrate/20160217122253_create_default_column_for_topics.rb
@@ -0,0 +1,5 @@
+class CreateDefaultColumnForTopics < ActiveRecord::Migration
+  def change
+    add_column :topics, :default, :boolean, default: false
+  end
+end
diff --git a/lib/tasks/topics.rake b/lib/tasks/topics.rake
new file mode 100644
index 00000000..a38e5531
--- /dev/null
+++ b/lib/tasks/topics.rake
@@ -0,0 +1,15 @@
+namespace :topics do
+
+  desc "Define defaults topics"
+  task :define_defaults => :environment do
+    ['Artes', 'Biologia', 'Ciências', 'Educação Física', 'Filosofia',
+     'Física', 'Geografia', 'História', 'Matemática', 'Língua Portuguesa', 'Química', 'Sociologia'].map do |name|
+      t = Topic.find_by_name(name)
+      if t.class == Topic
+        t.default = true
+        t.save
+      end
+    end
+  end
+
+end
-- 
GitLab