Skip to content

Commit

Permalink
AI metadata: Fix bug with model hash validation.
Browse files Browse the repository at this point in the history
  • Loading branch information
nottalulah committed Apr 5, 2024
1 parent 2fad6b3 commit 6b73512
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 7 deletions.
4 changes: 1 addition & 3 deletions app/controllers/ai_metadata_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,7 @@ def create_or_update
@ai_metadata = authorize AIMetadata.find_or_initialize_by(post_id: post_id)
prompt = params[:ai_metadata].delete(:prompt)
negative_prompt = params[:ai_metadata].delete(:negative_prompt)
parameters = params[:ai_metadata].permit!.to_h.transform_keys do |name|
name.strip.titleize
end
parameters = params[:ai_metadata].permit!.to_h
@ai_metadata.update(updater: CurrentUser.user, prompt:, negative_prompt:, parameters:)
flash[:notice] = "AI metadata updated" if @ai_metadata.valid?
respond_with(@ai_metadata, location: post_path(post_id))
Expand Down
15 changes: 11 additions & 4 deletions app/models/ai_metadata.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ class AIMetadata < ApplicationRecord
attr_accessor :updater

before_save :normalize_prompts
before_save :normalize_parameters
before_validation :normalize_model_hash
validate :validate_model_hash, if: :model_hash_changed?
validates :post_id, uniqueness: true
Expand Down Expand Up @@ -109,18 +110,24 @@ def normalize_prompts
self.negative_prompt = negative_prompt&.split(/\s*,\s*/)&.join(", ")
end

def normalize_parameters
self.parameters = self.parameters.filter_map do |key, value|
[key.gsub("_", " ").strip.titleize, value.strip] if key.present? && value.present?
end.to_h
end

def model_hash_changed?
self.parameters["Model hash"].present? && self.parameters["Model hash"] != parameters_was["Model hash"]
self.parameters["Model Hash"].present? && self.parameters["Model Hash"] != parameters_was["Model Hash"]
end

def normalize_model_hash
if self.parameters["Model hash"].present?
self.parameters["Model hash"] = self.parameters["Model hash"].downcase
if self.parameters["Model Hash"].present?
self.parameters["Model Hash"] = self.parameters["Model Hash"].downcase
end
end

def validate_model_hash
if self.parameters["Model hash"].present? && !self.parameters["Model hash"].match?(/\A[a-f0-9]+\Z/)
if self.parameters["Model Hash"].present? && !self.parameters["Model Hash"].match?(/\A[a-f0-9]+\Z/)
errors.add(:model_hash, "is invalid")
end
end
Expand Down

0 comments on commit 6b73512

Please sign in to comment.