Class: C80NewsTz::Fact
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- C80NewsTz::Fact
- Extended by:
- FriendlyId
- Defined in:
- app/models/c80_news_tz/fact.rb
Class Method Summary collapse
-
.similar_issue_pubs(pub, count) ⇒ Object
выдать нужное количество публикаций из того же номера.
-
.similar_rubric_pubs(pub, count) ⇒ Object
выдать нужное количество публикаций из той же рубрики.
-
.where_locations(arr_locs_ids) ⇒ Object
выдать массив хэшей: список фактов, находящихся в указанных позициях, отсортированный по location_id.
-
.where_rubric(rubric_slug) ⇒ Object
выдать факты, принадлежащие указанной рубрике.
Instance Method Summary collapse
-
#company_logo ⇒ Object
выдать логотип первой попавшейся компании если чего-то нету - выдаётся nil.
-
#issue_id ⇒ Object
выдать id первого попавшегося номера если номера у публикации нету - выдать невероятное число 999999.
-
#issue_title ⇒ Object
выдать название номера, которому принадлежит новость если чего-то не хватает - выдаётся пустая строка.
- #normalize_friendly_id(input) ⇒ Object
-
#photo_preview ⇒ Object
выдать картинку, которая пойдёт в блок преьвю.
-
#rubric_id ⇒ Object
выдать id первой попавшейся рубрики если рубрики у публикации нету - выдать невероятное число 999999.
-
#rubric_title ⇒ Object
выдать строку: title первой попавшейся рубрики если таковой нету - выдаётся пустая строка.
- #short_meta_description ⇒ Object
- #slug_candidates ⇒ Object
Class Method Details
.similar_issue_pubs(pub, count) ⇒ Object
выдать нужное количество публикаций из того же номера
142 143 144 145 146 147 148 |
# File 'app/models/c80_news_tz/fact.rb', line 142 def self.similar_issue_pubs(pub, count) r = self.joins(:issues) .where(:c80_news_tz_issues => {:id => pub.issue_id}) .where.not(:c80_news_tz_facts => {:id => pub.id}) .limit(count) r end |
.similar_rubric_pubs(pub, count) ⇒ Object
выдать нужное количество публикаций из той же рубрики
133 134 135 136 137 138 139 |
# File 'app/models/c80_news_tz/fact.rb', line 133 def self.similar_rubric_pubs(pub, count) r = self.joins(:rubrics) .where(:c80_news_tz_rubrics => {:id => pub.rubric_id}) .where.not(:c80_news_tz_facts => {:id => pub.id}) .limit(count) r end |
.where_locations(arr_locs_ids) ⇒ Object
выдать массив хэшей: список фактов, находящихся в указанных позициях, отсортированный по location_id
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'app/models/c80_news_tz/fact.rb', line 107 def self.where_locations(arr_locs_ids) # f = C80NewsTz::Fact.joins(:locations).where(:c80_news_tz_locations => {:id => [1,2]}) s = " SELECT `c80_news_tz_facts`.*, `c80_news_tz_locations`.`id` AS `location_id` FROM `c80_news_tz_facts` INNER JOIN `c80_news_tz_facts_locations` ON `c80_news_tz_facts_locations`.`fact_id` = `c80_news_tz_facts`.`id` INNER JOIN `c80_news_tz_locations` ON `c80_news_tz_locations`.`id` = `c80_news_tz_facts_locations`.`location_id` WHERE `c80_news_tz_locations`.`id` IN (#{arr_locs_ids.join(",")}) ORDER BY `location_id`; " # result = self.connection.select_all(s) result = self.find_by_sql(s) result end |
.where_rubric(rubric_slug) ⇒ Object
выдать факты, принадлежащие указанной рубрике
128 129 130 |
# File 'app/models/c80_news_tz/fact.rb', line 128 def self.where_rubric(rubric_slug) self.joins(:rubrics).where(:c80_news_tz_rubrics => {:slug => rubric_slug}) end |
Instance Method Details
#company_logo ⇒ Object
выдать логотип первой попавшейся компании если чего-то нету - выдаётся nil
96 97 98 99 100 101 102 103 104 |
# File 'app/models/c80_news_tz/fact.rb', line 96 def company_logo result = nil if companies.count > 0 if companies.first.logo.present? result = companies.first.logo end end result end |
#issue_id ⇒ Object
выдать id первого попавшегося номера если номера у публикации нету - выдать невероятное число 999999
76 77 78 79 80 81 82 |
# File 'app/models/c80_news_tz/fact.rb', line 76 def issue_id result = 999999 if issues.count > 0 result = issues.first.id end result end |
#issue_title ⇒ Object
выдать название номера, которому принадлежит новость если чего-то не хватает - выдаётся пустая строка
86 87 88 89 90 91 92 |
# File 'app/models/c80_news_tz/fact.rb', line 86 def issue_title result = "" if issues.count > 0 result = issues.first.number end result end |
#normalize_friendly_id(input) ⇒ Object
23 24 25 |
# File 'app/models/c80_news_tz/fact.rb', line 23 def normalize_friendly_id(input) input.to_s.to_slug.normalize(transliterations: :russian).to_s end |
#photo_preview ⇒ Object
выдать картинку, которая пойдёт в блок преьвю
45 46 47 48 49 50 51 52 |
# File 'app/models/c80_news_tz/fact.rb', line 45 def photo_preview result = nil if fphotos.count > 0 result = fphotos.first.image else end result end |
#rubric_id ⇒ Object
выдать id первой попавшейся рубрики если рубрики у публикации нету - выдать невероятное число 999999
66 67 68 69 70 71 72 |
# File 'app/models/c80_news_tz/fact.rb', line 66 def rubric_id result = 999999 if rubrics.count > 0 result = rubrics.first.id end result end |
#rubric_title ⇒ Object
выдать строку: title первой попавшейся рубрики если таковой нету - выдаётся пустая строка
56 57 58 59 60 61 62 |
# File 'app/models/c80_news_tz/fact.rb', line 56 def rubric_title result = "" if rubrics.count > 0 result = rubrics.first.title end result end |
#short_meta_description ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'app/models/c80_news_tz/fact.rb', line 31 def if description.present? && description.length > 200 result = description elsif full.present? && full.length > 0 result = (full[0..200]+"...") else result = nil end result end |
#slug_candidates ⇒ Object
27 28 29 |
# File 'app/models/c80_news_tz/fact.rb', line 27 def slug_candidates [:title] + Array.new(6) {|index| [:title, index+2]} end |