Sha256: 470246ad8ebe38316b5ab92eb976f29307127405b71f03cfdc084edccf253e73

Contents?: true

Size: 1.79 KB

Versions: 9

Compression:

Stored size: 1.79 KB

Contents

event :permit_codename, :validate,
      on: :update, changed: :codename do
  errors.add :codename, "only admins can set codename" unless Auth.always_ok?
  validate_uniqueness_of_codename
end

event :validate_uniqueness_of_codename do
  return (self.codename = nil) if codename.blank?
  return if errors.present? || !Card.find_by_codename(codename)
  errors.add :codename, "codename #{codename} already in use"
end

event :validate_name, :validate, on: :save, changed: :name do
  validate_legality_of_name
  return if errors.any?
  validate_uniqueness_of_name
end

event :validate_uniqueness_of_name do
  # validate uniqueness of name
  condition_sql = "cards.key = ? and trash=?"
  condition_params = [name.key, false]
  unless new_record?
    condition_sql << " AND cards.id <> ?"
    condition_params << id
  end
  if (c = Card.find_by(condition_sql, *condition_params))
    errors.add :name, "must be unique; '#{c.name}' already exists."
  end
end

event :validate_legality_of_name do
  if name.length > 255
    errors.add :name, "is too long (255 character maximum)"
  elsif name.blank?
    errors.add :name, "can't be blank"
  elsif name.parts.include? ""
    errors.add :name, "is incomplete"
  else
    unless name.valid?
      errors.add :name, "may not contain any of the following characters: " \
                        "#{Card::Name.banned_array * ' '}"
    end
    # this is to protect against using a plus card as a tag
    return unless name.junction? && simple? && id &&
                  Auth.as_bot { Card.count_by_wql right_id: id } > 0
    errors.add :name, "#{name} in use as a tag"
  end
end

event :validate_key, after: :validate_name, on: :save do
  if key.empty?
    errors.add :key, "cannot be blank" if errors.empty?
  elsif key != name.key
    errors.add :key, "wrong key '#{key}' for name #{name}"
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
card-1.94.1 mod/core/set/all/name_validations.rb
card-1.94.0 mod/core/set/all/name_validations.rb
card-1.93.13 mod/core/set/all/name_validations.rb
card-1.93.12 mod/core/set/all/name_validations.rb
card-1.93.11 mod/core/set/all/name_validations.rb
card-1.93.10 mod/core/set/all/name_validations.rb
card-1.93.9 mod/core/set/all/name_validations.rb
card-1.93.8 mod/core/set/all/name_validations.rb
card-1.93.7 mod/core/set/all/name_validations.rb