# encoding: utf-8 class Qa include Mongoid::Document include Mongoid::Timestamps # include OrbitModel::LanguageRestrict include OrbitModel::Status include OrbitTag::Taggable include OrbitCategory::Categorizable include Slug field :title,as: :slug_title, localize: true field :rich_title, localize: true field :answer, localize: true field :create_user_id field :update_user_id field :uid, type: String field :order_position, type: Integer, default: -1 field :rss2_id, type: String has_many :qa_links, :autosave => true, :dependent => :destroy has_many :qa_files, :autosave => true, :dependent => :destroy accepts_nested_attributes_for :qa_files, :allow_destroy => true accepts_nested_attributes_for :qa_links, :allow_destroy => true scope :can_display, ->{where(:is_hidden=>false,:title.ne => "").order_by([:is_top, :desc])} # belongs_to :qa_category before_save :clean_values # validates :title, :at_least_one => true after_initialize do |record| if record.rich_title.blank? && !record.title.blank? record.update(:rich_title_translations => record.title_translations) end end def self.search( category_id = nil ) if category_id.to_s.size > 0 find(:all, :conditions => {qa_category_id: category_id}).desc( :is_top, :title ) else find(:all).desc( :is_top, :title) end end def self.find_by_param(input) self.find_by(uid: input) end def self.widget_datas where( :is_hidden => false ).desc(:is_top, :created_at) end protected def qa_category_with_title self.category.title end def clean_values self.qa_links.each do |link| link.delete if link.url.blank? && link.title.blank? end self.tags.delete('') end end