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