Reviewed-on: #379 Co-authored-by: miteruzo <miteruzo@naver.com> Co-committed-by: miteruzo <miteruzo@naver.com>
このコミットはPull リクエスト #379 でマージされました.
このコミットが含まれているのは:
@@ -5,9 +5,16 @@ class GekanatorQuestionsController < ApplicationController
|
||||
.accepted
|
||||
.includes(:gekanator_question_examples)
|
||||
.order(priority_weight: :desc, id: :asc)
|
||||
.to_a
|
||||
deprecated_tag_keys = deprecated_tag_keys_for(questions)
|
||||
|
||||
render json: {
|
||||
questions: questions.map { |question| question_json(question) }
|
||||
questions: questions.filter_map { |question|
|
||||
json = question_json(question)
|
||||
next if hidden_question?(json[:condition], deprecated_tag_keys)
|
||||
|
||||
json
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
@@ -100,4 +107,41 @@ class GekanatorQuestionsController < ApplicationController
|
||||
.first
|
||||
&.first
|
||||
end
|
||||
|
||||
def deprecated_tag_keys_for questions
|
||||
tag_keys = questions.filter_map { |question|
|
||||
condition = condition_json(question.condition)
|
||||
next unless condition['type'] == 'tag'
|
||||
|
||||
condition['key'].to_s.presence
|
||||
}.uniq
|
||||
return {} if tag_keys.empty?
|
||||
|
||||
categories = []
|
||||
names = []
|
||||
tag_keys.each do |key|
|
||||
category, name = parse_tag_key(key)
|
||||
categories << category
|
||||
names << name
|
||||
end
|
||||
|
||||
Tag
|
||||
.joins(:tag_name)
|
||||
.where(category: categories.uniq)
|
||||
.where(tag_names: { name: names.uniq })
|
||||
.where.not(deprecated_at: nil)
|
||||
.pluck('tags.category', 'tag_names.name')
|
||||
.each_with_object({ }) do |(category, name), h|
|
||||
h["#{ category }:#{ name }"] = true
|
||||
end
|
||||
end
|
||||
|
||||
def hidden_question? condition, deprecated_tag_keys
|
||||
condition[:type] == 'tag' && deprecated_tag_keys[condition[:key].to_s]
|
||||
end
|
||||
|
||||
def parse_tag_key key
|
||||
parts = key.to_s.split(':')
|
||||
[parts.first.to_s, parts.drop(1).join(':')]
|
||||
end
|
||||
end
|
||||
|
||||
新しい課題から参照
ユーザをブロックする