Ich versuche, einen Wert aus einem Dropdown zu ersetzen, wenn mehrere Bedingungen erfüllt sind. Ich versuche das mit der gsub-Methode zu tun.ruby gsub mit Bedingung
Szenario 1: Wenn aktuell ausgewählter Wert 9.3.9 ist dann Wert 9.4.1 soll nicht
Szenario 2 zur Verfügung: wenn aktuell ausgewählter Wert ist 9.3.10 dann Wert 9.4.1 und 9.4.4 sollte nicht verfügbar sein
Entschuldigung, dass das Code-Snippet nicht enthalten ist. Unten ist die Methode, die ich verwende, um meine RDS-Instanzen zu erhalten. Ich verwende bereits gsub, um zu überprüfen, ob die aktuelle Version 9.3 ist und ein Upgrade auf 9.4 verhindert. Ich möchte das auf das obige Szenario ändern.
def available_engine_versions(instance)
if instance.engine == RdsGeneric::RDS_TYPE_MYSQL
# This custom override for certain MySQL cases suppresses the option to upgrade to 5.6 from 5.5.
# Amazon cannot do direct updates from MySQL 5.5 to MySQL 5.6 for DBs created before 4/23/2014.
# instance.instance.created_at -> Uses Amazon's date of creation, not the one stored by ActiveRecord
if instance.nil? || instance.engine_version.start_with?('5.6.') || instance.instance.nil? || instance.instance.created_at >= Time.parse('2014-04-23')
RdsConfiguration::rds_configurations[RdsGeneric::RDS_TYPE_MYSQL][:engine_versions]
else
RdsConfiguration::rds_configurations[RdsGeneric::RDS_TYPE_MYSQL][:engine_versions].select{ |type| type.to_f <= 5.5 }
end
elsif instance.engine == RdsGeneric::RDS_TYPE_POSTGRES
RdsConfiguration::rds_configurations[RdsGeneric::RDS_TYPE_POSTGRES][:engine_versions].select{ |type| type.gsub(/(\d+\.\d+).*?$/,"\\1") == instance.engine_version.gsub(/(\d+\.\d+).*?$/,"\\1") } # no upgrades from e.g. 9.3.x to 9.4.y
else
RdsConfiguration::rds_configurations[instance.engine][:engine_versions]
end
end
Wie speichern Sie die Liste der Versionen und die ausgewählte Version? muss Code sehen, um eine Antwort zu geben; z. B. ist gsub ein String-Operator, aber ich würde erwarten, dass Sie tatsächlich ein Array überprüfen –
Dies scheint wie ein JavaScript-Problem. Bist du sicher, dass du Ruby brauchst? – tadman
Sie möchten diese "versionabetically" wahrscheinlich lieber als in der Standardsortierreihenfolge sortieren: 'sort_by {| v | v.split.collect (&: to_i)} ' – tadman