複数の条件が満たされている場合は、値をドロップダウンから置き換えようとしています。私はgsubメソッドでこれをしようとしています。条件付きルビーgsub
シナリオ1:現在選択された値が9.3.9である場合、値9.4.1が利用可能であるべきではないが、シナリオ2は
:現在選択された値は、その値9.4.1 9.3.10ある 場合9.4.4はご利用いただけません。
ご迷惑をおかけして申し訳ございません。私のRDSインスタンスを取得する方法は以下の通りです。私はすでにgsubを使って、使用されているバージョンが9.3かどうかを確認し、9.4へのアップグレードを防ぎます。上記のシナリオに変更したいと思います。
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
バージョンのリストと選択したバージョンをどのように保存していますか?答えを提供するためにいくつかのコードを見る必要があります。たとえば、gsubは文字列演算子ですが、実際に配列をチェックしていると思います。 –
これはJavaScriptの問題のようです。これを行うにはRubyが必要ですか? – tadman
また、デフォルトのソート順ではなく、 "バージョン管理的に"ソートしたいと思うかもしれません: 'sort_by {| v | v.split.collect(&:to_i)} ' – tadman