artists: fix error messages for invalid artist names.

* When trying to create an artist entry for a non-artist tag, set the
  error on the name attribute so that the artist name gets marked
  as incorrect in the artist edit form.

* Fix a bad `Name '' cannot be blank` error message when the artist name
  is blank.

* Fix showing wiki pages of non-artist tags in the artist edit form when
  the artist name conflicts with a non-artist tag (e.g. if you try to
  create an artist named '1girl', don't show the wiki for 1girl in the
  artist edit form).
This commit is contained in:
evazion
2021-03-07 20:26:52 -06:00
parent fee7ed506b
commit 52d76a4f22
3 changed files with 4 additions and 3 deletions

View File

@@ -10,7 +10,7 @@ class TagNameValidator < ActiveModel::EachValidator
case value
when /\A_*\z/
record.errors.add(attribute, "'#{value}' cannot be blank")
record.errors.add(attribute, "cannot be blank")
when /\*/
record.errors.add(attribute, "'#{value}' cannot contain asterisks ('*')")
when /,/

View File

@@ -12,6 +12,7 @@ class Artist < ApplicationRecord
validate :validate_tag_category
validates :name, tag_name: true, uniqueness: true
before_save :update_tag_category
after_save :create_version
after_save :clear_url_string_changed
@@ -155,7 +156,7 @@ class Artist < ApplicationRecord
return unless !is_deleted? && name_changed? && tag.present?
if tag.category_name != "Artist" && !tag.empty?
errors.add(:base, "'#{name}' is a #{tag.category_name.downcase} tag; artist entries can only be created for artist tags")
errors.add(:name, "'#{name}' is a #{tag.category_name.downcase} tag; artist entries can only be created for artist tags")
end
end

View File

@@ -5,7 +5,7 @@
<%= f.input :group_name %>
<%= f.input :url_string, label: "URLs", as: :text, input_html: { value: params.dig(:artist, :url_string) || @artist.urls.join("\n")}, hint: "You can prefix a URL with - to mark it as dead." %>
<% if @artist.wiki_page.present? %>
<% if @artist.tag&.artist? && @artist.wiki_page.present? %>
<div class="input">
<label>Wiki (<%= link_to "Edit", edit_wiki_page_path(@artist.wiki_page) %>)</label>
</div>