#require 'elasticsearch/model' class Article < ActiveRecord::Base searchkick has_many :popup_popupables, :as => :popupable has_many :popups, :through => :popup_popupables #include Elasticsearch::Model #include Elasticsearch::Model::Callbacks has_many :category_categoryables, :as => :categoryable has_many :categories, :through => :category_categoryables has_many :question_juridiques has_many :menu_item_articles has_many :menu_items, :through => :menu_item_articles has_many :comments, :as => :commentable belongs_to :image_file belongs_to :without_text_image_file, :class_name => "ImageFile" has_many :animal_animalables, :as => :animalable has_many :animals, :through => :animal_animalables has_many :blocks, :as => :blockable belongs_to :category has_many :enabled_comments,-> {where(:enabled => true)}, :source => :comments, :as => :commentable after_create :after_creation has_many :lang_articles, :dependent => :destroy accepts_nested_attributes_for :lang_articles has_many :tag_taggables, :as => :taggable has_many :tags, :through => :tag_taggables belongs_to :article_author validates :published_at, :presence => true attr_accessor :skip_block before_validation do self.categories << self.category if self.category end HUMAN_NAME = "lien vers un article." def lang(locale) self.lang_articles.find_by_lang_site_id(LangSite.find_by_slug(locale).id) end def name self.lang_articles.first.title end def after_creation if !skip_block LangSite.all.each do |lang| @block = Block.new(:block_name => "Contenu", :lang_site => lang) @block.blockable = self @block.save end end end def alloweds_types self.block.allow_types :TitleContent, :TextContent, :ImageContent, :LinkContent, :GalleryContent, :HtmlContent end scope :recents, -> {order("articles.published_at DESC, articles.created_at DESC")} scope :between, lambda { |start, stop| after(start).before(stop) } scope :after, lambda { |date| where("(articles.published_at >= ?)", date ) } scope :before, lambda { |date| where("(articles.published_at <= ?)", date ) } #after_initialize do # if self.published_at # self.published_at = self.published_at.strftime('%d/%m/%Y') # end # end # after_update do # logger.debug ["Updating document... ", __elasticsearch__.delete_document, __elasticsearch__.index_document].join # end def search_data { html: lang_articles.map(&:html), title: lang_articles.map(&:title), description: lang_articles.map(&:description), category_names: (category.name if category).to_s, category_ids: (category.id if category), animals_names: animals.map(&:name), animals_ids: animals.map(&:id), document: "article", created_at: published_at } end def as_indexed_json(options={}) self.as_json( include: { lang_articles: { methods: [:html], only: [:title, :description, :html]}#, # authors: { methods: [:full_name], only: [:full_name] }, # comments: { only: :text } }) end end #Article.import