Commit 01c1557140a250a7c55269fa415fe842175e66ff

Authored by Antonio Terceiro
1 parent f4b316aa

Refactor Article#copy

Using a constant instead of a method call that instantiates that array at
every call; besides, using symbols instead of strings.
Showing 1 changed file with 17 additions and 4 deletions   Show diff stats
app/models/article.rb
@@ -269,14 +269,27 @@ class Article < ActiveRecord::Base @@ -269,14 +269,27 @@ class Article < ActiveRecord::Base
269 269
270 270
271 def copy(options) 271 def copy(options)
272 - attrs = attributes.reject! { |key, value| article_attr_blacklist.include?(key) } 272 + attrs = attributes.reject! { |key, value| ATTRIBUTES_NOT_COPIED.include?(key.to_sym) }
273 attrs.merge!(options) 273 attrs.merge!(options)
274 self.class.create(attrs) 274 self.class.create(attrs)
275 end 275 end
276 276
277 - def article_attr_blacklist  
278 - ['id', 'profile_id', 'parent_id', 'slug', 'path', 'updated_at', 'created_at', 'last_changed_by_id', 'version', 'lock_version', 'type', 'children_count', 'comments_count', 'hits']  
279 - end 277 + ATTRIBUTES_NOT_COPIED = [
  278 + :id,
  279 + :profile_id,
  280 + :parent_id,
  281 + :slug,
  282 + :path,
  283 + :updated_at,
  284 + :created_at,
  285 + :last_changed_by_id,
  286 + :version,
  287 + :lock_version,
  288 + :type,
  289 + :children_count,
  290 + :comments_count,
  291 + :hits,
  292 + ]
280 293
281 def self.find_by_old_path(old_path) 294 def self.find_by_old_path(old_path)
282 find(:first, :include => :versions, :conditions => ['article_versions.path = ?', old_path], :order => 'article_versions.id desc') 295 find(:first, :include => :versions, :conditions => ['article_versions.path = ?', old_path], :order => 'article_versions.id desc')