Rails ActsAsTaggableOn, ранжирует результат tagged_with по количеству похожих тегов - PullRequest
1 голос
/ 01 августа 2020

У меня есть модель Classs с типами тегов компаний, категорий и стадий.

classs.rb:

  acts_as_taggable_on :businesses
  acts_as_taggable_on :categories
  acts_as_taggable_on :stages

  BUSINESSES = [
    "Service Professional (Financial Advisor, Realtor, etc.)",
    "E-Commerce",
    "F&B",
    "Education & Coaching",
    "Start-ups",
    "B2B",
    "B2C",
    "Others"
  ]

  CATEGORIES = [
    "Social Media Marketing",
    "Lead Generation",
    "Content Strategy",
    "Marketing Strategy",
    "Branding Strategy"
  ]

  STAGES = [
    "Development (Little to no revenue)",
    "Early (Small customer base with some market presence)",
    "Growth (Established customer base and large amount of revenue)",
    "Mature (Large customer base and profits)"
  ]

И форма ClassSearch, где пользователи могут введите свой бизнес, категорию и стадию соответственно, ища Classses.

class_searches_controller # show

@filter = @class_search.categories.push(@class_search.business).push(@class_search.stage).flatten.reject(&:blank?)
@classses = Classs.all.tagged_with(@filter, any: true)

Мне интересно, можно ли ранжировать / заказывать @ классы на основе количества тегов, похожих на @class_search. Если я не ошибаюсь, actions_as_taggable_on ранжирует результаты по идентификатору, что в данном случае не очень помогает.

Заранее спасибо: D

1 Ответ

1 голос
/ 02 августа 2020

Это одна из доступных опций, которые вы можете передать методу tagged_with.

@classses = Classs.all.tagged_with(@filter, any: true, order_by_matching_tag_count: true)

Должен дать вам список, упорядоченный (по убыванию) по количеству совпадающих тегов.

...