このコミットが含まれているのは:
@@ -175,7 +175,8 @@ class TagsController < ApplicationController
|
|||||||
tags_by_id =
|
tags_by_id =
|
||||||
Tag
|
Tag
|
||||||
.joins(:tag_names)
|
.joins(:tag_names)
|
||||||
.includes(:tag_names, :materials, :tag_descriptions, parents: :tag_descriptions)
|
.preload(:tag_names, :materials, :deerjikists, :tag_descriptions,
|
||||||
|
parents: [:tag_names, :materials, :deerjikists, :tag_descriptions])
|
||||||
.where(tag_names: { language_code: locale.language_code, primary_flg: true },
|
.where(tag_names: { language_code: locale.language_code, primary_flg: true },
|
||||||
id: tag_ids)
|
id: tag_ids)
|
||||||
.index_by(&:id)
|
.index_by(&:id)
|
||||||
@@ -238,7 +239,8 @@ class TagsController < ApplicationController
|
|||||||
base =
|
base =
|
||||||
Tag
|
Tag
|
||||||
.joins(:tag_names)
|
.joins(:tag_names)
|
||||||
.includes(:tag_names, :materials, :tag_descriptions, parents: :tag_descriptions)
|
.preload(:tag_names, :materials, :deerjikists, :tag_descriptions,
|
||||||
|
parents: [:tag_names, :materials, :deerjikists, :tag_descriptions])
|
||||||
.where(tag_names: { language_code: locale.language_code, primary_flg: true },
|
.where(tag_names: { language_code: locale.language_code, primary_flg: true },
|
||||||
deprecated_at: nil)
|
deprecated_at: nil)
|
||||||
base = base.where('tags.post_count > 0') if present_only
|
base = base.where('tags.post_count > 0') if present_only
|
||||||
@@ -282,7 +284,8 @@ class TagsController < ApplicationController
|
|||||||
tag =
|
tag =
|
||||||
Tag
|
Tag
|
||||||
.joins(:tag_names)
|
.joins(:tag_names)
|
||||||
.includes(:tag_names, :materials, :tag_descriptions, parents: :tag_descriptions)
|
.preload(:tag_names, :materials, :deerjikists, :tag_descriptions,
|
||||||
|
parents: [:tag_names, :materials, :deerjikists, :tag_descriptions])
|
||||||
.find_by(id: params[:id],
|
.find_by(id: params[:id],
|
||||||
tag_names: { language_code: locale.language_code, primary_flg: true })
|
tag_names: { language_code: locale.language_code, primary_flg: true })
|
||||||
return render json: TagRepr.base(tag, language_code: locale.language_code) if tag
|
return render json: TagRepr.base(tag, language_code: locale.language_code) if tag
|
||||||
@@ -302,7 +305,8 @@ class TagsController < ApplicationController
|
|||||||
tag =
|
tag =
|
||||||
Tag
|
Tag
|
||||||
.joins(:tag_names)
|
.joins(:tag_names)
|
||||||
.includes(:tag_names, :materials, :tag_descriptions, parents: :tag_descriptions)
|
.preload(:tag_names, :materials, :deerjikists, :tag_descriptions,
|
||||||
|
parents: [:tag_names, :materials, :deerjikists, :tag_descriptions])
|
||||||
.find_by(tag_names: { name:, language_code: locale.language_code, primary_flg: true })
|
.find_by(tag_names: { name:, language_code: locale.language_code, primary_flg: true })
|
||||||
return render json: TagRepr.base(tag, language_code: locale.language_code) if tag
|
return render json: TagRepr.base(tag, language_code: locale.language_code) if tag
|
||||||
|
|
||||||
@@ -320,7 +324,8 @@ class TagsController < ApplicationController
|
|||||||
|
|
||||||
tag =
|
tag =
|
||||||
Tag.joins(:tag_names)
|
Tag.joins(:tag_names)
|
||||||
.includes(:tag_names, :tag_descriptions, parents: :tag_descriptions)
|
.preload(:tag_names, :materials, :deerjikists, :tag_descriptions,
|
||||||
|
parents: [:tag_names, :materials, :deerjikists, :tag_descriptions])
|
||||||
.find_by(id: params[:id],
|
.find_by(id: params[:id],
|
||||||
tag_names: { language_code: locale.language_code, primary_flg: true })
|
tag_names: { language_code: locale.language_code, primary_flg: true })
|
||||||
return head :not_found unless tag
|
return head :not_found unless tag
|
||||||
@@ -340,7 +345,8 @@ class TagsController < ApplicationController
|
|||||||
tag =
|
tag =
|
||||||
Tag
|
Tag
|
||||||
.joins(:tag_names)
|
.joins(:tag_names)
|
||||||
.includes(:tag_names, :tag_descriptions, parents: :tag_descriptions)
|
.preload(:tag_names, :materials, :deerjikists, :tag_descriptions,
|
||||||
|
parents: [:tag_names, :materials, :deerjikists, :tag_descriptions])
|
||||||
.find_by(tag_names: { name:, language_code: locale.language_code, primary_flg: true })
|
.find_by(tag_names: { name:, language_code: locale.language_code, primary_flg: true })
|
||||||
return head :not_found unless tag
|
return head :not_found unless tag
|
||||||
|
|
||||||
@@ -359,7 +365,8 @@ class TagsController < ApplicationController
|
|||||||
tag =
|
tag =
|
||||||
Tag
|
Tag
|
||||||
.joins(:tag_names)
|
.joins(:tag_names)
|
||||||
.includes(:tag_names, :tag_descriptions, parents: :tag_descriptions)
|
.preload(:tag_names, :materials, :deerjikists, :tag_descriptions,
|
||||||
|
parents: [:tag_names, :materials, :deerjikists, :tag_descriptions])
|
||||||
.find_by(id: params[:id],
|
.find_by(id: params[:id],
|
||||||
tag_names: { language_code: locale.language_code, primary_flg: true })
|
tag_names: { language_code: locale.language_code, primary_flg: true })
|
||||||
return head :not_found unless tag
|
return head :not_found unless tag
|
||||||
@@ -425,7 +432,8 @@ class TagsController < ApplicationController
|
|||||||
tag =
|
tag =
|
||||||
Tag
|
Tag
|
||||||
.joins(:tag_names)
|
.joins(:tag_names)
|
||||||
.includes(:tag_names, :materials, :tag_descriptions, parents: :tag_descriptions)
|
.preload(:tag_names, :materials, :deerjikists, :tag_descriptions,
|
||||||
|
parents: [:tag_names, :materials, :deerjikists, :tag_descriptions])
|
||||||
.find_by(tag_names: { name:, language_code: locale.language_code, primary_flg: true })
|
.find_by(tag_names: { name:, language_code: locale.language_code, primary_flg: true })
|
||||||
return head :not_found unless tag
|
return head :not_found unless tag
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,13 @@ class Locale < ApplicationRecord
|
|||||||
belongs_to :language, foreign_key: :language_code, primary_key: :code
|
belongs_to :language, foreign_key: :language_code, primary_key: :code
|
||||||
belongs_to :script, foreign_key: :script_code, primary_key: :code
|
belongs_to :script, foreign_key: :script_code, primary_key: :code
|
||||||
|
|
||||||
enum :code, ja: 'ja', ain_kana: 'ain-Kana'
|
# Enum deserialisation uses the first key for each stored value.
|
||||||
|
# Keep the legacy key for existing predicates, scopes and query arguments.
|
||||||
|
enum :code, { ja: 'ja', 'ain-Kana' => 'ain-Kana', ain_kana: 'ain-Kana' }
|
||||||
|
|
||||||
|
def code= value
|
||||||
|
super(self.class.codes.fetch(value.to_s, value))
|
||||||
|
end
|
||||||
|
|
||||||
def self.nipponese = Locale.find('ja')
|
def self.nipponese = Locale.find('ja')
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
class Script < ApplicationRecord
|
class Script < ApplicationRecord
|
||||||
has_many :locales, foreign_key: :script_code, primary_key: :code
|
has_many :locales, foreign_key: :script_code, primary_key: :code
|
||||||
|
|
||||||
enum :code, jpan: 'Jpan', kana: 'Kana'
|
# Canonical keys come first so reads and plucks retain ISO 15924 spelling.
|
||||||
|
# Legacy keys preserve the existing enum predicates, scopes and queries.
|
||||||
|
enum :code, { 'Jpan' => 'Jpan', 'Kana' => 'Kana', jpan: 'Jpan', kana: 'Kana' }
|
||||||
|
|
||||||
|
def code= value
|
||||||
|
super(self.class.codes.fetch(value.to_s, value))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -18,7 +18,11 @@ class TagVersionRecorder < VersionRecorder
|
|||||||
|
|
||||||
def snapshot_attributes
|
def snapshot_attributes
|
||||||
names = snapshot_names
|
names = snapshot_names
|
||||||
compatibility_names = names['ja'] || names.fetch('ain')
|
compatibility_names = names['ja'] || names['ain'] || names.values.first
|
||||||
|
unless compatibility_names
|
||||||
|
@record.errors.add(:tag_names, :invalid)
|
||||||
|
raise ActiveRecord::RecordInvalid, @record
|
||||||
|
end
|
||||||
parent_ids =
|
parent_ids =
|
||||||
TagImplication.where(tag_id: @record.id).order(:parent_tag_id)
|
TagImplication.where(tag_id: @record.id).order(:parent_tag_id)
|
||||||
.lock.pluck(:parent_tag_id)
|
.lock.pluck(:parent_tag_id)
|
||||||
@@ -35,12 +39,18 @@ class TagVersionRecorder < VersionRecorder
|
|||||||
@record.tag_names.order(:language_code, :name).lock.group_by(&:language_code)
|
@record.tag_names.order(:language_code, :name).lock.group_by(&:language_code)
|
||||||
.transform_values do |tag_names|
|
.transform_values do |tag_names|
|
||||||
primary = tag_names.find(&:primary?)
|
primary = tag_names.find(&:primary?)
|
||||||
|
unless primary
|
||||||
|
@record.errors.add(:tag_names, :invalid,
|
||||||
|
language_code: tag_names.first.language_code)
|
||||||
|
raise ActiveRecord::RecordInvalid, @record
|
||||||
|
end
|
||||||
aliases = tag_names.reject(&:primary?).sort_by(&:name).map { |tag_name|
|
aliases = tag_names.reject(&:primary?).sort_by(&:name).map { |tag_name|
|
||||||
{ 'name' => tag_name.name, 'script_code' => tag_name.script_code }
|
{ 'name' => tag_name.name,
|
||||||
|
'script_code' => Script.codes.fetch(tag_name.script_code, tag_name.script_code) }
|
||||||
}
|
}
|
||||||
|
|
||||||
{ 'name' => primary.name,
|
{ 'name' => primary.name,
|
||||||
'script_code' => primary.script_code,
|
'script_code' => Script.codes.fetch(primary.script_code, primary.script_code),
|
||||||
'auto_generated' => primary.auto_generated,
|
'auto_generated' => primary.auto_generated,
|
||||||
'aliases' => aliases }
|
'aliases' => aliases }
|
||||||
end
|
end
|
||||||
|
|||||||
新しいイシューから参照
ユーザーをブロックする