From 9b46f868dacd2adc6e230b4b66c9378c047b1aaf Mon Sep 17 00:00:00 2001 From: Andreas Stephanides Date: Sun, 8 Mar 2015 22:13:05 +0100 Subject: [PATCH] thema doku --- app/models/thema.rb | 54 ++++++++++++++++++++++++++++++--------------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/app/models/thema.rb b/app/models/thema.rb index 2149dcd..c1503f3 100644 --- a/app/models/thema.rb +++ b/app/models/thema.rb @@ -3,39 +3,57 @@ # # Table name: themen # -# id :integer not null, primary key -# title :string(255) -# text :text -# created_at :datetime not null -# updated_at :datetime not null -# themengruppe_id :integer -# +# id :integer not null, primary key +# title :string(255) +# text :text +# created_at :datetime not null +# updated_at :datetime not null +# themengruppe_id :integer ID of themengruppe +# isdraft :boolean True if this topic is only a draft an should not be visible to public +# hidelink :boolean true if link to this topic should not be visible in the list +# hideattachment :boolean hide the attachment table in the view - doesnt hide attachments that are linked and doesn't protect them +# sticky_startpage :boolean if true topic is sticked on the start page +# sticky_intern : boolean if true this topic is sticked at the intern page require 'uri' class Thema < ActiveRecord::Base -include Rails.application.routes.url_helpers + include Rails.application.routes.url_helpers + # Properties that should be accesible attr_accessible :text, :title, :themengruppe_id,:isdraft, :hidelink, :hideattachment, :sticky_startpage,:sticky_intern + # Each topic has multiple questions, that are also referenced in the FAQ. has_many :fragen + # Attachments can be all data formats has_many :attachments - belongs_to :themengruppe, :foreign_key => "themengruppe_id" - has_one :gremium - has_many :nlinks, as: :link + # attached pics can be used as title pictures + has_many :titlepics, :as=>:parent, :class_name=>'Attachment', :conditions=>{:flag_titlepic=>true} + # each topic has to belong to one group + belongs_to :themengruppe, :foreign_key => "themengruppe_id", :touch=>true validates :themengruppe, :presence => true + # a topic can be linked to a gremium + has_one :gremium + # a topic can be attached to news + has_many :nlinks, as: :link + # each topic can have multiple meetings + has_many :meetings, :as=>:parent + # each topic can have multiple documents + has_many :documents, :as=>:parent + validates :title, :presence => true validates :text, :presence => true - has_many :titlepics, :as=>:parent, :class_name=>'Attachment', :conditions=>{:flag_titlepic=>true} - has_many :meetings, :as=>:parent - has_many :documents, :as=>:parent + + scope :outdated, -> {includes(:translations).where("thema_translations.updated_atI18n.t.locale)} scope :public, where(:isdraft=>false).includes(:themengruppe).where("themengruppen.public"=>true) + default_scope order("themen.priority").reverse_order - # scope :search, ->(query) {where("themen.text like ? or themen.title like ?", "%#{query}%", "%#{query}%")} - resourcify + # make topic searchable searchable do text :text text :title, :boost=>4.0 end - scope :outdated, -> {includes(:translations).where("thema_translations.updated_atI18n.t.locale) - } + + resourcify + # title and text can have translates :title,:text, :versioning =>true, :fallbacks_for_empty_translations => true + def is_outdated? unless translation.try(:updated_at).nil? translation.updated_at < 7.month.ago