app/models/page.rb in tkh_content-0.9.1 vs app/models/page.rb in tkh_content-0.9.2
- old
+ new
@@ -1,74 +1,72 @@
# this is needed for now to make mass assignment security compatible with the translation of globalize3
-Globalize::ActiveRecord::Translation.class_eval do
- attr_accessible :locale
-end
+# Globalize::ActiveRecord::Translation.class_eval do
+# attr_accessible :locale
+# end
class Page < ActiveRecord::Base
-
- belongs_to :author, class_name: 'User', foreign_key: 'author_id'
+
+ belongs_to :author, class_name: 'User'
has_many :comments, :dependent => :destroy
-
- attr_accessible :title, :short_title, :description, :body, :for_blog, :parent_id, :tag_list, :parent_page_title, :author_name
-
+
has_many :taggings
has_many :tags, through: :taggings
-
+
validates_presence_of :title
validates_presence_of :description
validates_presence_of :body
validates_presence_of :author_id
-
+
translates :title, :short_title, :description, :body
-
+
def to_param
title ? "#{id}-#{title.to_url}" : id
end
- scope :by_recent, order('updated_at desc')
- scope :for_blog, where('for_blog = ?', true)
- scope :not_for_blog, where('for_blog = ?', false)
- scope :published, where('published_at IS NOT ?', nil)
- scope :by_recently_published, order('published_at desc')
+ scope :by_recent, -> { order('updated_at desc') }
+ scope :for_blog, -> { where('for_blog = ?', true) }
+ scope :not_for_blog, -> { where('for_blog = ?', false) }
+ scope :published, -> { where('published_at IS NOT ?', nil) }
+ scope :by_recently_published, -> { order('published_at desc') }
# tree scopes
- scope :orphans, where('parent_id IS ?', nil)
+ scope :orphans, -> { where('parent_id IS ?', nil) }
scope :with_parent_id, lambda { |id| where('parent_id = ?', id) }
- scope :by_title, order('title')
- scope :by_menu_position, order('menu_position')
-
+ scope :by_title, -> { order('title') }
+ scope :by_menu_position, -> { order('menu_position') }
+
def nickname
@nickname ||= short_title || title
end
-
+
### menu related instance methods
-
+
def orphan?
parent_id == nil
end
-
+
def has_children?
Page.with_parent_id(id).published.count >= 1
end
-
+
def children
Page.published.with_parent_id(id)
end
-
+
def parent
Page.find(parent_id)
end
-
+
def has_siblings?
Page.with_parent_id(parent_id).published.count >= 1
end
-
+
def siblings
Page.published.with_parent_id(parent_id)
end
-
+
### tagging related methods
-
+
def self.tagged_with(name)
Tag.find_by_name!(name).pages
end
def self.tag_counts
@@ -83,11 +81,11 @@
def tag_list=(names)
self.tags = names.split(" ").map do |n|
Tag.where(name: n.strip).first_or_create!
end
end
-
+
### autocomplete related instance methods
def parent_page_title
parent.try(:title) unless self.orphan?
end
def parent_page_title=(title)
@@ -95,17 +93,17 @@
self.parent_id = Page.find_by_title(title).id
else
self.parent_id = nil
end
end
-
+
def author_name
author.try(:formal_name)
end
def author_name=(formal_name)
name_as_array = formal_name.split(',')
last_name = name_as_array[0].strip
first_name = name_as_array[1].strip
self.author_id = User.where("last_name = ? AND first_name = ?", last_name, first_name).first.id
end
-
+
end